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

Python 正在删除具有特定字符的列表项,python,list,Python,List,我的问题是: 假设我有一个列表: l=['asd1', 'jkl1', 'mno1', 'pqr2', 'stu2'] 如何从包含“2”字符的列表中删除所有项目而不遍历列表?而不遍历列表?你根本不能;在这里,你需要至少浏览一次列表,找出哪些项目需要保留,哪些项目需要删除。列表理解将相对有效: l = [i for i in l if '2' not in i] 唯一的例外是如果你有更多的信息;例如,如果您知道'2'只会出现一次(或x次),您可以在找到第一次也是唯一一次出现时停止(尽管这在您的

我的问题是:

假设我有一个列表:

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

如何从包含“2”字符的列表中删除所有项目而不遍历列表?

而不遍历列表?你根本不能;在这里,你需要至少浏览一次列表,找出哪些项目需要保留,哪些项目需要删除。列表理解将相对有效:

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

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

您可以使用
过滤器
从列表中筛选项目

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

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

filter
的实现几乎肯定会涉及迭代,但最终用户看不到,因此您可能会感到满意。

您可以使用列表理解来实现这一点,但最终不管您需要迭代列表中的什么内容

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

你说的“不重复列表”是什么意思?你不反复浏览列表是什么意思?@greole wow。。。这是错误的,有点奇怪:)如果不访问项目列表,您只能猜测其中的内容您可以使用内置函数,但它们仍然会在列表中进行内部迭代。你的意思是没有显式迭代吗?谢谢。这就是我一直想要的@SunnyNanda他可能不想对迭代进行编码,而是想要一个已经存在的函数。我想这就是我为这个特定问题定义“无迭代”的方式。