从 python 列表中删除元素
Remove elements from python list
我试图理解这里的逻辑,为什么这段代码没有删除列表中的所有元素?
int_lst = [1, 2, 3, 4, 5, 6]
for i in int_lst:
int_lst.remove(i)
print(int_lst)
print(int_lst) #Output: [2, 4, 6]
当您删除一个元素时,该元素之后的所有内容都会有效地移回一个位置。但是迭代器并不知道:它只是将指针前进到下一个元素,跳过本应绑定到 i
.
的下一个值。
具体来说,i
从1开始,你去掉它,现在2在迭代器的当前位置。迭代器前进,现在 3 在当前位置并绑定到 i
.
换句话说,每次删除元素时,都会有效地推进迭代器,此外迭代器将执行的显式推进。
发生这种情况是因为您要删除正在迭代的同一个列表中的元素。您可以通过避免这种情况轻松修复它:
for i in list(int_lst):
int_lst.remove(i)
我试图理解这里的逻辑,为什么这段代码没有删除列表中的所有元素?
int_lst = [1, 2, 3, 4, 5, 6]
for i in int_lst:
int_lst.remove(i)
print(int_lst)
print(int_lst) #Output: [2, 4, 6]
当您删除一个元素时,该元素之后的所有内容都会有效地移回一个位置。但是迭代器并不知道:它只是将指针前进到下一个元素,跳过本应绑定到 i
.
具体来说,i
从1开始,你去掉它,现在2在迭代器的当前位置。迭代器前进,现在 3 在当前位置并绑定到 i
.
换句话说,每次删除元素时,都会有效地推进迭代器,此外迭代器将执行的显式推进。
发生这种情况是因为您要删除正在迭代的同一个列表中的元素。您可以通过避免这种情况轻松修复它:
for i in list(int_lst):
int_lst.remove(i)