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

0 投票
2 回答
540 浏览
提问于 2025-04-18 12:16

假设我有一个嵌套的列表,我想要逐个检查里面的元素,看看是否满足某个条件(比较当前元素和下一个元素),一直检查到最后一个元素。我该怎么做呢?如果条件满足了,我又该如何让指针跳过下一个元素,继续检查后面的元素,也就是说跳过 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

你可以把原来的列表和一个去掉第一个元素的副本列表合在一起,方法是这样的:

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

你完全不用担心索引的问题。

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

撰写回答