比较当前和下一个项目,如果满足条件,则跳过下一个项目

时间:2014-07-06 15:18:07

标签: python

鉴于我有一个嵌套列表,我想迭代检查条件是否满足(比较当前和下一个项目)直到最后一项,我该怎么做,如果条件返回true,我怎么能移动指针跳过下一个并继续其他项目,即跳过i + 1,继续i + 2?

list = [[1, 3], [2, 1], [2, 1], [4, 2], [5, 1], [5, 1]]
for i, j in enumerate(list):
    if j[i] == list[i+1]:  #compare current and next item, but this will fail for the last item
      #set j[i] = "1st duplicate" and list[i+1] = "2nd duplicate" 
      # move pointer to [i+2]

    else:
      set j[i] = "ok"


    >>>> [ ["ok"],["1st duplicate"], ["2nd duplicate"], ["ok"],["1st duplicate"], ["2nd duplicate"] ]    

2 个答案:

答案 0 :(得分:0)

转到倒数第二个元素。

for i, j in enumerate(my_list[:-1]) 

在最后一次检查中,j将是最后一个元素,my_list[i+1]将是最后一个元素。

如果您想查看子元素,则需要使用my_list[i+1][1]my_list[i+1][0] 也不要使用list作为变量名称,它会隐藏内置list

这将符合您要求的输出。

for i, j in enumerate(my_list[:-1]):
    if j[1] == my_list[i+1][1]:
        my_list[i]=["1st duplicate"]
        my_list[i+1 ]= ["2nd duplicate"]
    elif my_list[i] not in [["1st duplicate"],["2nd duplicate"]]:
        my_list[i] = [ "ok"]
[['ok'], ['1st duplicate'], ['2nd duplicate'], ['ok'], ['1st duplicate'], ['2nd duplicate']]

答案 1 :(得分:0)

您可以使用相同列表的副本压缩原始列表,而不使用第一个元素,例如

for first, second in zip(my_list, my_list[1:]):
    ...

您根本不必担心索引。

相关问题