[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