关于python列表里删除元素的错误
对于test = [1,1,2,1,3,4] 这个列表,我们要删除里面的元素1,一般我们会写下面这种代码
test = [1,1,2,1,3,4]
for k in test:
if k == 1:
test.remove(k)
print(test)
但这个结果会得到[2, 1, 3, 4],却是错误的,这是因为在for循环中删除列表元素,会直接改变列表的长度,相当于列表整体左移而索引不变。因此要使用深复制来操作。
test = [1,1,2,1,3,4]
for k in test.copy():
if k == 1:
test.remove(k)
print(test)
copy是深复制,创建一个列表和原有列表一模一样,但是存储空间不同,不像浅复制只是增加一个指向原有列表的指针。
注意:remove的作用是删除列表中第一个和传入参数相同的元素。
本文解析了在Python中从列表中删除元素时常见的错误,并提供正确的实现方式。通过对比for循环直接删除与使用列表深复制的方法,揭示了在循环中修改列表可能导致的索引错乱问题。
470

被折叠的 条评论
为什么被折叠?



