Python 列表的问题

92 阅读1分钟

需求

循环列表,并每次删除使用过的元素

lst = [[1], ['abc'], ['111'], ['222'], [5]]
for index, data in enumerate(lst):
    print(index)
    lst.remove(data)
print(lst)

错误的结果:列表的元素并没有循环结束,但是因为删除元素的索引的问题,已经退出循环了。

image.png

这段代码很明显是不能实现的,这段代码不行的原因是,当你在遍历列表的同时删除元素时,会导致索引错误。

正确的做法

lst = [[1], ['abc'], ['111'], ['222'], [5]]
new_list = []
for index, data in enumerate(lst):
    if data not in new_list:
        print(index)
        new_list.append(data)
    else:
        break
print(lst)

正确的结果是:将列表的元素准确的循环结束

image.png