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



给定我有一个嵌套的列表,我想迭代检查是否满足条件(比较当前和下一个项目),直到最后一个项目,我怎么能做到这一点,如果条件返回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"] ]    

转到倒数第二个元素

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']]

您可以使用不包含第一个元素的相同列表的副本压缩原始列表,如下所示

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

你完全不用担心索引

最新更新