python - 从 Python 中的列表列表中过滤元素?

标签 python list list-comprehension

我想从列表的列表中过滤元素,并使用 lambda 迭代每个元素的元素。例如,给定列表:

a = [[1,2,3],[4,5,6]]

假设我只想保留列表总和大于 N 的元素。我试着写:

filter(lambda x, y, z: x + y + z >= N, a)

但是我得到了错误:

 <lambda>() takes exactly 3 arguments (1 given)

如何在将每个元素的值分配给 x、y 和 z 时进行迭代?类似于 zip,但适用于任意长的列表。

谢谢,

附注我知道我可以这样写: filter(lambda x: sum(x)..., a) 但这不是重点,假设这些不是数字而是任意元素,我想将它们的值分配给变量名。

最佳答案

当我们有其他可用的技术时,将 lambdafilter 一起使用有点愚蠢。

在这种情况下,我可能会以这种方式(或使用等效的生成器表达式)解决特定问题

>>> a = [[1, 2, 3], [4, 5, 6]]
>>> [item for item in a if sum(item) > 10]
[[4, 5, 6]]

或者,如果我需要打开包装,比如

>>> [(x, y, z) for x, y, z in a if (x + y) ** z > 30]
[(4, 5, 6)]

如果我真的需要一个函数,我可以使用参数元组解包(顺便说一下,它在 Python 3.x 中被删除,因为人们不常使用它):lambda (x, y, z ): x + y + z 接受一个元组并将其三个项目解包为 xyz。 (请注意,您也可以在 def 中使用它,即:def f((x, y, z)): return x + y + z。)

当然,您可以使用赋值样式解包(def f(item): x, y, z = item; return x + y + z)和索引(lambda item : item[0] + item[1] + item[2]) 在所有版本的 Python 中。

关于python - 从 Python 中的列表列表中过滤元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2655956/

相关文章:

python - 根据某些条件从不同的 pyspark 列中提取所有匹配项

python - 列表理解python中的"and"语句

python:如何覆盖 SimpleHTTPServer 以在目录列表中显示时间戳?

list - Dart : how can I change the value of a class property in a list of Classes

python - 基于模式分离列表的最优雅方式(Python)

python - 列表理解——将一个列表中的字符串转换为另一个列表中的整数

python - Python 列表初始化中的条件项

python - 列表推导式中的海象运算符 (python)

python - WebDriver异常: Message: unknown error: Chrome failed to start: exited abnormally with ChromeDriver Chrome and Selenium through Python on VPS

python - 下载文件,而不是内容