举个例子:
a = [1, 2, 3, 4, 5]
for i in a:
a.remove(i)
print(a)
结果可以运行下是:[2, 4],本来是应该逐个删除的为什么还有元素留下来。我的理解是列表第一个数删除后,后面一个数自动补到前面那个数的位子,就比如说a中的1是a0,删掉了a0之后,下面就是删a1,但是a已经发生变化,a现在是[2, 3, 4, 5]。所以现在的a0是2,a1是3,就存在漏删的现象。所以需要创建一个列表的副本来删除列表的元素
可以这样:a = [1, 2, 3, 4, 5]
for i in a.copy():
a.remove(i)
print(a)
copy()就是创建列表的副本的方法。这样就可以删除列表的元素了,当然你也可以创建一个新的列表,设置判断条件来删除原列表的元素,可以这样:
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
for i in b:
a.remove(i)
print(a)
感觉这样应该好理解点吧
python的for循环下为什么不能直接删除列表的元素
最新推荐文章于 2022-05-16 22:26:47 发布