我想逐个迭代python中的列表。 E.g。
l = [1, 2, 3, 4, 5, 6, 7, 8]
for a, b in magic_function_I_always_wanted(l)
print(a, b)
>>> 1 2
>>> 2 3
>>> 3 4
>>> 4 5
>>> etc...
我知道你可以在python以及几乎所有语言中这样做,我只想要一个并不可怕的版本。
我对所有语言都很好奇,但我个人最关心的是python。如果有一种方法可以在python中很好地完成这项工作(我没有想到哪些使用了大量izip
或其他同样古怪的东西),请回答!
这是发布的问题的不重复,因为该问题要求l - > (l0,l1),(l2,l3)等...这很容易。我要求l - > (l0,l1),(l1,l2)等......
答案 0 :(得分:1)
您可以使用移位版本zip
列表,然后循环播放它们:
for o, e in zip(l, l[1:]):
print(o, e)
#(1, 2)
#(2, 3)
#(3, 4)
#(4, 5)
#(5, 6)
#(6, 7)
#(7, 8)
不确定这是否更优雅或更高效,看起来像创建像deque
这样的容器是一个选项:
from collections import deque
n = 3
tmp = deque(l[:(n-1)])
for e in l[(n-1):]:
tmp.append(e)
print(list(tmp))
tmp.popleft()
#[1, 2, 3]
#[2, 3, 4]
#[3, 4, 5]
#[4, 5, 6]
#[5, 6, 7]
#[6, 7, 8]