什么 Python 的用户自定义列表理解结构最有用?
我创建了以下两个量词,用于执行不同的验证操作:
def every(f, L): return not (False in [f(x) for x in L])
def some(f, L): return True in [f(x) for x in L]
下面提出了一个优化版本(需要 Python 2.5+):
def every(f, L): return all(f(x) for x in L)
def some(f, L): return any(f(x) for x in L)
那么,它是如何工作的呢?
"""For all x in [1,4,9] there exists such y from [1,2,3] that x = y**2"""
answer = every([1,4,9], lambda x: some([1,2,3], lambda y: y**2 == x))
使用此类操作,您可以轻松进行智能验证,例如:
"""There exists at least one bot in a room which has a life below 30%"""
answer = some(bots_in_this_room, lambda x: x.life < 0.3)
等等,您甚至可以使用这些量词回答非常复杂的问题。当然,Python 中没有无限列表(嘿,它不是 Haskell :)),但是 Python 的列表推导非常实用。
你有自己最喜欢的列表理解结构吗?
PS:我想知道,为什么大多数人倾向于不回答问题而是批评提出的例子?问题实际上是关于最喜欢的列表理解结构。