Python的用戶列表理解構建是最有用的?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]
優化的版本(requres的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:我想知道,爲什麼大多數人往往不會回答問題但批評的例子?問題是關於最愛列表 - 理解建構。
社區維基,如果有的話 – 2009-11-23 15:47:09
這些功能都是自2.5開始構建的。 http://docs.python.org/library/functions.html – 2009-11-23 15:47:57
@Fred:更高效。 – 2009-11-23 15:49:13