【发布时间】:2013-12-26 06:36:19
【问题描述】:
我有一个关于列表的简单问题
假设我想从一个列表中删除所有的 'a's:
list = ['a', 'a', 'b', 'b', 'c', 'c']
for element in list:
if element == 'a':
list.remove('a')
print list
==> 结果:
['a', 'b', 'b', 'c', 'c', 'd', 'd']
我知道这是因为,在我删除第一个 'a' 后,列表索引得到了
当所有元素向左推 1 时递增。
在其他语言中,我想解决这个问题的一种方法是从列表末尾向后迭代..
但是,遍历 reversed(list) 会返回相同的错误。
有解决这个问题的pythonic方法吗??
谢谢
【问题讨论】:
-
反向迭代没有帮助,因为您使用的是
remove,它从前面遍历列表并删除它找到的第一个出现。不要使用remove,除非你真的没有更好的选择。 -
请不要使用
list名称作为变量。