【问题标题】:Compare two adjacent elements in same list比较同一列表中的两个相邻元素
【发布时间】:2019-05-05 19:22:14
【问题描述】:
我已经完成了post,但我想知道我在使用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)
【问题讨论】:
标签:
python
python-3.x
list
list-comprehension
【解决方案1】:
您正在将一个稳定元素与列表中除第一个之外的所有元素进行比较。
正确的方法是:
for i in range(len(a)-1):
x = a[i]
y = a[i+1]
print (x,y)
【解决方案2】:
您的外循环在您的内循环中持续存在 每个 值。要比较相邻元素,您可以zip 一个列表,该列表本身具有移位版本。可以通过list slicing实现移位:
for x, y in zip(a, a[1:]):
print(x, y)
在一般情况下,如果您的输入是任何可迭代而不是列表(或另一个支持索引的可迭代),您可以使用itertools pairwise recipe,也可在more_itertools 库中使用:
from more_itertools import pairwise
for x, y in pairwise(a):
print(x, y)