删除具有特定字符的列表项

时间:2014-01-22 17:13:30

标签: python list

我的问题是:

假设我有一个清单:

l=['asd1', 'jkl1', 'mno1', 'pqr2', 'stu2']

如何从列表中删除包含' 2'的所有项目?字符没有迭代列表?

3 个答案:

答案 0 :(得分:2)

没有遍历列表?你根本做不到;你不能在O(n)这里做任何更好的事情,你需要至少完成一次清单,找出要保留的项目和要删除的项目。列表理解会相对有效:

l = [i for i in l if '2' not in i]

唯一的例外是如果您有更多信息;如果您知道'2' 只会出现一次(或x次),例如,您可以在找到第一个也是唯一一个出现时停止(尽管这样做无济于事在您的示例中,因为'2'位于最后一项中。)

答案 1 :(得分:1)

您可以使用filter过滤列表中的项目。

l=['asd1', 'jkl1', 'mno1', 'pqr2', 'stu2']
l = filter(lambda item: "2" not in item, l)
print l

结果:

['asd1', 'jkl1', 'mno1']

filter的实现几乎肯定涉及迭代,但这对最终用户来说是不可见的,因此对您来说可能是令人满意的。

答案 2 :(得分:0)

你可以使用列表推导,但最后不管你要在列表中迭代什么

l=['asd1', 'jkl1', 'mno1', 'pqr2', 'stu2']
filt_char = '2'
new_list = [ x for x in l if filt_char not in x]