Code: Alles auswählen
class List2(list):
def replace(self, src, dst):
"""
>>> l=List2([1,2,3,4])
>>> l
[1, 2, 3, 4]
>>> l.replace((2,3), "X")
[1, 'X', 4]
>>> l=List2([1,2,3,4])
>>> l.replace([2], "X")
[1, 'X', 3, 4]
>>> l=List2([1,2,3,4,5])
>>> l.replace([2,3,4], "X")
[1, 'X', 5]
>>> l=List2([1,2,3,4,5])
>>> l.replace((4,5), "X")
[1, 2, 3, 'X']
>>> l=List2([1,2,3,4,5])
>>> l.replace((1,2), "X")
['X', 3, 4, 5]
>>> l=List2([1,2,3,3,3,4,5])
>>> l.replace((3,3), "X")
[1, 2, 'X', 3, 4, 5]
>>> l=List2(["A",1,2,"B",1,2,"C"])
>>> l.replace((1,2), "*")
['A', '*', 'B', '*', 'C']
>>> l=List2(["X", 1,2,3, 1,2,3, 1,2,3, "Y"])
>>> l.replace([1,2,3], ".")
['X', '.', '.', '.', 'Y']
>>> l=List2([(1,2),(3,4), (5,6), (1,2),(3,4)])
>>> l.replace([(1,2), (3,4)], "X")
['X', (5, 6), 'X']
"""
src=list(src)
src_len=len(src)
dst_len=len(dst)
index = 0
while index < len(self):
element = self[index:index+src_len]
if element == src:
del(self[index:index+src_len])
self.insert(index, dst)
index += dst_len
else:
index += 1
return self
def __contains__(self, item):
"""
>>> [2,3] in List2([1,2,3,4])
True
>>> (2,3) in List2([1,2,3])
True
>>> 2 in List2([1,2,3])
True
"""
if not isinstance(item, (list, tuple)):
return super(List2, self).__contains__(item)
if not isinstance(item, list):
item=list(item)
item_len=len(item)
for index in xrange(len(self)):
element = self[index:index+item_len]
if element == item:
return True
return False
def index(self, item):
"""
>>> List2([1,2,3,4]).index([2,3])
1
>>> List2([1,2,3,4]).index((3,4))
2
>>> List2([1,2,3]).index("X")
Traceback (most recent call last):
...
ValueError: 'X' is not in list
>>> List2([1,2,3]).index([5,6])
Traceback (most recent call last):
...
ValueError: [5, 6] is not in list
"""
if not isinstance(item, (list, tuple)):
return super(List2, self).index(item)
if not isinstance(item, list):
item=list(item)
item_len=len(item)
for index in xrange(len(self)):
element = self[index:index+item_len]
if element == item:
return index
raise ValueError("%r is not in list" % item)
if __name__ == "__main__":
import doctest
print doctest.testmod(verbose=0)
print " --- END --- "