问题很简单,我想要遍历列表中的每个元素和它后面的元素(将最后一个元素与第一个元素组成一对)。
我想到了两种非Pythonic的方法:
def pairs(lst):
n = len(lst)
for i in range(n):
yield lst[i],lst[(i+1)%n]
并且:
def pairs(lst):
return zip(lst,lst[1:]+lst[:1])
期望输出:
>>> for i in pairs(range(10)):
print i
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
(6, 7)
(7, 8)
(8, 9)
(9, 0)
>>>
您有没有更 Pythonic 的方式来做这件事?也许有一些我没听说过的预定义函数可以使用?
另外,一个更一般的 n-fold 版本(三元组、四元组等而不是对)可能也很有趣。
lst[0]
更改为lst[:1]
以使其适用于空序列。代码变得更加对称。 - Darius Bacon+[lst[:1]]
应该被替换为+lst[:1]
,是吗? - Manuel Selva[lst[0]]
,但我不知道为什么 @colonelpanic 把它改了。 - fortran