如何在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. 
+0

你想''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

+0

我想[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

你可以做这样的事情,让连续元素:

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] 
+0

感谢这为我工作。 – 2013-05-04 05:00:57

+0

@NileshAgrawal你遇到了我建议的方法有问题吗? (只是想知道) – HennyH 2013-05-04 06:02:37

+0

它运作良好。谢谢 。 – 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], []) 

使用此方法,您不需要复制列表。