我有一个列表,我正在尝试删除其中包含'pie'
的元素。这就是我所做的:
['applepie','orangepie', 'turkeycake']
for i in range(len(list)):
if "pie" in list[i]:
del list[i]
我总是获取超出范围的列表索引,但是当我将del
更改为print
语句时,它可以很好地打印出元素。
发布于 2012-10-18 19:16:18
与其从正在迭代的列表中删除项目,不如尝试使用Python的漂亮list comprehension syntax创建一个新列表
foods = ['applepie','orangepie', 'turkeycake']
pieless_foods = [f for f in foods if 'pie' not in f]
发布于 2012-10-18 19:15:23
在迭代过程中删除元素会更改大小,从而导致IndexError。
您可以将代码重写为(使用列表理解)
L = [e for e in L if "pie" not in e]
发布于 2012-10-18 19:21:52
类似于:
stuff = ['applepie','orangepie', 'turkeycake']
stuff = [item for item in stuff if not item.endswith('pie')]
修改你正在迭代的对象应该被认为是行不通的。
https://stackoverflow.com/questions/12953253
复制相似问题