如何在python中迭代列表中的两个连续元素?
我正在尝试迭代列表的两个连续元素。如何在python中迭代列表中的两个连续元素?
mentionedlist=[[1,2,3,4][1,2,3,4][2,3,4,5][3,4,5,5][1,2,3,4][1,2,3,4][]]
现在我想在列表的天气第一个元素比较在mentionedlist一张表的mentionedlist和第一个元素是一样的,我也希望做整个列表中的这些比较。
[1,2,3,4][1,2,3,4] is example of answer that i am expecting.
你可以做这样的事情,让连续元素:
mentionedlist=[[1,2,3,4],[1,2,3,4],[2,3,4,5],[3,4,5,5],[1,2,3,4],[1,2,3,4],[]]
for l1, l2 in zip(mentionedlist, mentionedlist[1:]):
print l1, l2
输出
[1, 2, 3, 4] [1, 2, 3, 4]
[1, 2, 3, 4] [2, 3, 4, 5]
[2, 3, 4, 5] [3, 4, 5, 5]
[3, 4, 5, 5] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4]
[1, 2, 3, 4] []
要做到两两比较:
for l1, l2 in zip(mentionedlist, mentionedlist[1:]):
if len(l1) == len(l2) and sum(x != y for x,y in zip(l1, l2)) == 0:
print l1, l2
它给你:
[1, 2, 3, 4] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4]
感谢这为我工作。 – 2013-05-04 05:00:57
@NileshAgrawal你遇到了我建议的方法有问题吗? (只是想知道) – HennyH 2013-05-04 06:02:37
它运作良好。谢谢 。 – 2013-05-04 06:11:51
注意:你也需要把值之间的逗号在列表中,即List=[[1,..],[2,..]]
from itertools import islice
mentionedList=[[1,2,3,4],[1,2,3,4],[2,3,4,5],[3,4,5,5],[1,2,3,4],[1,2,3,4],[]]
for i,v in enumerate(islice(mentionedList,0,len(mentionedList)-1)):
print (v,mentionedList[i+1])
为您提供:
([1, 2, 3, 4], [1, 2, 3, 4]) ([1, 2, 3, 4], [2, 3, 4, 5]) ([2, 3, 4, 5], [3, 4, 5, 5]) ([3, 4, 5, 5], [1, 2, 3, 4]) ([1, 2, 3, 4], [1, 2, 3, 4]) ([1, 2, 3, 4], [])
使用此方法,您不需要复制列表。
你想''1,2,3,4] [1,2,3,4]'然后'[2,3,4,5] [3,4,5,5]'然后''[ 1,2,3,4] [1,2,3,4]'?或者你想''1,2,3,4] [1,2,3,4]'然后'[1,2,3,4] [2,3,4,5]'然后'[2, 3,4,5] [3,4,5,5]'...? – 2013-05-04 02:14:01
我想[1,2,3,4] [1,2,3,4]然后[2,3,4,5] [3,4,5,5]然后[1,2,3,4] [1,2,3,4] – 2013-05-04 04:01:30