[python] Indexy v tupleti
Jan Janech
devel na atlas.sk
Úterý Červen 9 22:59:27 CEST 2009
'bry den,
Vzdy sa da spravit nieco taketo:
class atuple(tuple):
def __getitem__(self, index):
if isinstance(index, tuple):
ret = []
for i in index:
if isinstance(i, slice):
ret.extend(self[i])
else:
ret.append(self[i])
return tuple(ret)
return tuple.__getitem__(self, index)
potom:
In [29]: aaa=atuple(xrange(20))
In [30]: aaa
Out[30]: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19)
In [31]: aaa[1,2,5:8]
Out[31]: (1, 2, 5, 6, 7)
Jan Janech
PS: Pre inline-istov:
class atuple(tuple): __getitem__ = lambda self, index:
reduce(tuple.__add__, ((self[i] if isinstance(i, slice) else (self[i],
)) for i in index)) if isinstance(index, tuple) else
tuple.__getitem__(self, index)
MICHÁLEK Jan Mgr. wrote:
> Dobrý večer, řeším následující (banální problém), řešení jsem nenašel v knize, ani ve webovém tutoriálu, (používám python 2.5), nedaří se mi vybrat z tuple (ntice) konkrétní znaky pomocí indexu
>
> Následující příklad mi nefunguje
>
> print '%s,%s,%s'%('a','b','c','d','e','f')[:1,5]
>
> Hlásí mi to následující:
>
> Traceback (most recent call last):
> File "<pyshell#74>", line 1, in <module>
> print '%s,%s,%s'%('a','b','c','d','e','f')[:1,5]
> TypeError: tuple indices must be integers
>
> Indexy mají být celočíselné, hm, ale jak můžu zadat seznam indexů??
> Děkuji a přeji dobrou noc Je.
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 4141 (20090609) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
>
--
____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
Další informace o konferenci Python