Python の any および all 関数の動作を理解する
Python の any および all は、反復可能な内の複数の要素の真偽を評価する便利な方法を提供します。 。 any はいずれかの要素が True の場合に True を返しますが、all はすべての要素が True の場合にのみ True を返します。
any と all
直感的には、any は一連の論理 OR 演算子 (||)、および一連の論理 AND 演算子 (&&) として使用できます。この理解は、その機能を明確にするのに役立ちます:
短絡
あらゆるものの重要な側面は、その短絡動作です。結果を決定できるまで要素を順番に評価します。この最適化により、反復可能全体の不必要な走査が防止されます。
指定された例のアプリケーション
この例では、タプルを比較して、値が異なるかどうかを確認することを目的としています。その場合は True を出力します。予期される出力は [False、True、False] である必要があります。ただし、実際に得られる結果は「False、False、False」です。この矛盾は、使用されている式から生じます:
[any(x) and not all(x) for x in zip(*d['Drd2'])]
括弧内の式は、タプル内の少なくとも 1 つの要素が True であるが、すべての要素が True であるわけではない場合にのみ True と評価されます。指定されたケースでは、どのタプルにもそのような値は含まれていません。したがって、結果は誤って [False, False, False] になります。
正しい実装
意図した動作を実現するには、代わりに次の式を使用できます。
[x[0] != x[1] for x in zip(*d['Drd2'])]
この式は、各タプルの最初と 2 番目の要素を直接比較し、異なる場合は True を返します。その結果、目的の [False, True, False] の出力が得られます。
以上がPython の「any」関数と「all」関数はどのように機能するのか、またタプルの比較が失敗したのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。