Skip to main content
 首页 » 编程设计

python之简单地从 python 列表中删除元素

2025年05月04日10tuyile006

我想实现如下效果

a=[11, -1, -1, -1] 
msg=['one','two','tree','four'] 
msg[where a<0] 
['two','tree','four'] 

以类似的简单方式(没有讨厌的循环)。

附言。对于好奇的人来说,这个 if 语句是在一种函数式语言中本地工作的。

//编辑

我知道下面的文字与上面的要求不同,但我已经找到了我想要达到的目标。 我不想在我自己的线程中发送垃圾邮件,所以我也找到了一些不错的解决方案, 我想把它呈现给你。

filter(lambda x: not x.endswith('one'),msg) 

请您参考如下方法:

您可以使用 list comprehensions为了这。您需要匹配两个列表中的项目,zip功能被使用。这将生成一个元组列表,其中每个元组包含每个原始列表中的一个项目(即 [(11, 'one'), ...])。一旦有了这个,就可以遍历结果,检查第一个元素是否低于 0 并返回第二个元素。有关语法的更多详细信息,请参阅链接的 Python 文档。

[y for (x, y) in zip(a, msg) if x < 0] 

实际的问题似乎是在 msg 列表中查找不包含字符串 "one" 的项目。这可以直接完成:

[m for m in msg if "one" not in m]