首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找列表元素中的子字符串并删除元素

查找列表元素中的子字符串并删除元素
EN

Stack Overflow用户
提问于 2012-10-18 19:10:29
回答 5查看 2.1K关注 0票数 4

我有一个列表,我正在尝试删除其中包含'pie'的元素。这就是我所做的:

代码语言:javascript
复制
['applepie','orangepie', 'turkeycake']
for i in range(len(list)):
    if "pie" in list[i]:
         del list[i]

我总是获取超出范围的列表索引,但是当我将del更改为print语句时,它可以很好地打印出元素。

EN

回答 5

Stack Overflow用户

发布于 2012-10-18 19:16:18

与其从正在迭代的列表中删除项目,不如尝试使用Python的漂亮list comprehension syntax创建一个新列表

代码语言:javascript
复制
foods = ['applepie','orangepie', 'turkeycake']
pieless_foods =  [f for f in foods if 'pie' not in f]
票数 6
EN

Stack Overflow用户

发布于 2012-10-18 19:15:23

在迭代过程中删除元素会更改大小,从而导致IndexError。

您可以将代码重写为(使用列表理解)

代码语言:javascript
复制
L = [e for e in L if "pie" not in e]
票数 2
EN

Stack Overflow用户

发布于 2012-10-18 19:21:52

类似于:

代码语言:javascript
复制
stuff = ['applepie','orangepie', 'turkeycake']
stuff = [item for item in stuff if not item.endswith('pie')]

修改你正在迭代的对象应该被认为是行不通的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12953253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档