遍历Python列表中的相邻元素对

148 投票
6 回答
173864 浏览
提问于 2025-04-16 16:17

在Python中,是否可以用下面这种方式来遍历一个列表呢?(把这段代码当作伪代码来看待)

a = [5, 7, 11, 4, 5]
for v, w in a:
    print [v, w]

而且它应该产生这样的结果

[5, 7]
[7, 11]
[11, 4]
[4, 5]

6 个回答

63

要做到这一点,你需要这样做:

a =  [5, 7, 11, 4, 5]
for i in range(len(a)-1):
    print [a[i], a[i+1]]
222

你可以用 zip 函数把列表和它自己(去掉第一个元素)结合起来:

a = [5, 7, 11, 4, 5]

for previous, current in zip(a, a[1:]):
    print(previous, current)

这个方法即使你的列表没有元素或者只有一个元素也能正常工作(在这种情况下,zip 会返回一个空的可迭代对象,for 循环里的代码就不会执行)。不过,这个方法不适用于 生成器,只适用于 序列(比如 tupleliststr 等等)。

125

来自 itertools 的一些使用示例

from itertools import tee

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

for v, w in pairwise(a):
    ...

撰写回答