我在理解“ for循环”在Python中的工作方式时遇到了麻烦。我想使用for循环从列表中删除字符,以遍历列表,但输出与预期不符。 在以下代码中,我要删除字符“ e”:
lista = ['g', 'e', 'e', 'k', 'e','s', 'e', 'e']
for x in lista:
if x == 'e':
lista.remove(x)
print(lista)
当我期望['g','k','s']时,它会打印['g','k','s','e','e']。
谢谢。
在列表上进行迭代时,无法将其从列表中删除。这是因为当您从列表中删除一个项目时,它会缩小。因此,发生的事情是,当您遇到“ e”时,列表将缩小,然后转到列表中的下一项。但是由于列表缩小,因此您实际上跳过了一个项目。
为了解决您的问题,您必须遍历列表的副本。
您可以使用以下代码来实现以下目的
一种更简单,更好的方法如下:
list(filter(('e').__ne__, lista))
两种方法都返回
['g', 'k', 's']