【问题标题】:Python equivalent of LINQ All function?Python 相当于 LINQ All 函数?
【发布时间】:2011-12-27 04:14:37
【问题描述】:

测试集合中的所有元素是否满足条件的惯用 Python 方法是什么? (.NET All() method 在 C# 中很好地填补了这个空白。)

有明显的循环方法:

all_match = True
for x in stuff:
    if not test(x):
        all_match = False
        break

列表推导可以解决问题,但似乎很浪费:

all_match = len([ False for x in stuff if not test(x) ]) > 0

必须有更优雅的东西......我错过了什么?

【问题讨论】:

标签: python linq


【解决方案1】:
all_match = all(test(x) for x in stuff)

这会短路并且不需要东西成为列表 - 任何可迭代的东西都可以工作 - 所以有几个不错的功能。

还有类似的

any_match = any(test(x) for x in stuff)

【讨论】:

  • 绝对是我要走的路。但是,Python 中的allEnumerable.All 的不同之处在于它不直接接受谓词。 (所以它更类似于Enumerable.Where(predicate).All()。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2017-05-10
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多