关于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的作用是删除列表中第一个和传入参数相同的元素。