我已经阅读了一个帖子,但是在使用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)
我已经阅读了一个帖子,但是在使用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)
你的外部循环针对内部循环中的每个值持久存在。要比较相邻元素,你可以使用zip
函数将列表与其自身的移位版本配对。通过列表切片可以实现移位:
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)
您正在将一个稳定的元素与列表中除第一个元素以外的所有元素进行比较。
正确的方法应该是:
for i in range(len(a)-1):
x = a[i]
y = a[i+1]
print (x,y)