Python のユーザーが作成したリスト内包表記の構造のうち、最も有用なものはどれですか?
次の 2 つの量指定子を作成しました。これらを使用して、さまざまな検証操作を行います。
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: ほとんどの人が質問に答えずに提示された例を批判する傾向があるのはなぜでしょうか? 質問は、実際にはお気に入りのリスト内包表記に関するものです。