【发布时间】:2020-07-22 20:12:16
【问题描述】:
我想以更具声明性的方式使用 python,尽可能多地使用谓词来简化事情,但我无法理解如何在 python 中“简单”地做到这一点。
例如,在计算列表中的项目时,我希望能够传入谓词,如下所示:
mylist.count(lambda x: x.contains("f"))
计算列表中包含和“f”的项目。
我可以看到如何使用 itertools 做到这一点:
sum(map(lambda x: 1 if x.contains("f") else 0, l))
但这比 for 循环更糟糕。是我遗漏了什么还是 Python 不允许这种表达方式?
【问题讨论】:
-
sum(x.contains("f") for x in l);bool是int的子类,bool值的序列可以直接求和。
标签: python predicate declarative