Re: Übungen zu Datentypen
Verfasst: Mittwoch 16. März 2011, 19:52
@mutetella: Bei ``+`` wird eine neue Liste erzeugt und die Elemente von beiden Listen werden dort hinein kopiert.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
[2, 3, 4].insert(0, 1) <==> [1] + [2, 3, 4]
[1, 2, 4].insert(2, 3) <==> [1, 2, 4][0:2] + [3] + [1, 2, 4][2:]
Code: Alles auswählen
from collections import deque
test = ["test1", "test2", "test3", "test4"]
temp = deque()
for item in test:
temp.appendleft(item)
print list(temp)
#> ['test4', 'test3', 'test2', 'test1']
Code: Alles auswählen
>>> from collections import deque
>>> test = ["test1", "test2", "test3", "test4"]
>>> d = deque(test[-test.index(x)] for x in test)
>>> d.rotate(-1)
>>> list(d)
['test4', 'test3', 'test2', 'test1']
Code: Alles auswählen
>>> from collections import deque
>>> test = ["test1", "test2", "test3", "test4"]
>>> d = deque(test[-test.index(x)+1] for x in test)
>>> d.rotate(2)
>>> list(d)
['test4', 'test3', 'test2', 'test1']
Code: Alles auswählen
>>> from collections import deque
>>> from itertools import tee, izip, chain
>>> test = ["test1", "test2", "test3", "test4"]
>>> def pairwise(iterable):
... a, b = tee(iterable)
... next(b, None)
... return izip(a, b)
...
>>> def reverse_pair(pair):
... a, b = pair
... return b, a
...
>>> d = deque(map(reverse_pair, pairwise(test)))
>>> d.rotate(1)
>>> l = list(d)
>>> list(chain.from_iterable(l[:len(test)/2]))
['test4', 'test3', 'test2', 'test1']
Code: Alles auswählen
In [713]: test = ['t1', 't2', 't3', 't4', 't1']
In [714]: d = deque(test[-test.index(x)] for x in test)
In [715]: d.rotate(-1)
In [716]: list(d)
Out[716]: ['t1', 't4', 't3', 't1', 't1']
Code: Alles auswählen
In [727]: list(chain.from_iterable(l[:len(test)/2]))
Out[727]: ['t1', 't2', 't2', 't1', 't3', 't2']
In [728]: test
Out[728]: ['t1', 't2', 't3', 't4', 't2', 't1']