首页 > 解决方案 > 比较同一列表中的两个相邻元素

问题描述

我已经看过一篇文章,但我想知道我在使用for循环时在代码中做错了什么。

列表a如下:

a = [2, 4, 7,1,9, 33]

我只想比较两个相邻的元素:

2 4
4 7
7 1
1 9
9 33

我做了类似的事情:

for x in a:
    for y in a[1:]:
        print (x,y)

标签: pythonpython-3.xlistlist-comprehension

解决方案


对于内部循环中的每个值,您的外部循环都会持续存在。要比较相邻元素,您可以使用其自身的移位版本zip的列表。可以通过列表切片来实现移位:

for x, y in zip(a, a[1:]):
    print(x, y)

一般情况下,如果您的输入是任何可迭代而不是列表(或另一个支持索引的可迭代),您可以使用在库中也可用的itertools pairwiserecipemore_itertools

from more_itertools import pairwise

for x, y in pairwise(a):
    print(x, y)

推荐阅读