鉴于我有一个嵌套列表,我想迭代检查条件是否满足(比较当前和下一个项目)直到最后一项,我该怎么做,如果条件返回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"] ]
答案 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:]):
...
您根本不必担心索引。