s=[1,4,1,4,1,4,1,1,0,1]
for i in s[:]:
if i ==1: s.remove(i)
print s
输出:
^{pr2}$
正如@metatoaster所说,您可以使用filter
代码:
s=[1,4,1,4,1,4,1,1,0,1]
s=list(filter(lambda x:x !=1,s))
print s
[4, 4, 4, 0]
您可以使用过滤器删除多个东西示例
代码:
s=[1,4,1,4,1,4,1,1,0,1,2,3,5,6,7,8,9,10,20]
remove_element=[1,2,3,5,6,7,8,9]
s=list(filter(lambda x:x not in remove_element,s))
print s
[4, 4, 4, 0, 10, 20]
不要在遍历列表时更改列表。结果是不可预测的,正如你在这里看到的。一个简单的选择是构建一个新列表:
如果出于某种原因,您必须在适当的地方编辑列表,而不是创建一个新的索引,我的即兴最佳答案是遍历它,找到必须删除的索引,然后反向遍历索引列表,逐个删除它们:
^{pr2}$因为这会首先从列表末尾移除元素,所以计算的原始索引仍然有效。但除非有特殊情况,否则我通常更喜欢计算新列表。在
考虑以下代码:
结果:
^{pr2}$简言之,您的代码会得到一些不理想的结果,因为每当您减少数字
1
时,列表的“大小”和“索引位置”都会发生变化,并且您的代码清楚地证明了Python
中的for each loop
不能处理动态大小的列表。在迭代列表时不应更改列表的内容
但是您可以迭代列表内容的副本,并在您的情况下更改它
代码:
输出:
^{pr2}$正如@metatoaster所说,您可以使用
filter
代码:
您可以使用过滤器删除多个东西示例
代码:
相关问题 更多 >
编程相关推荐