リスト内に 1 つ以上の要素が存在するかどうかを確認するのは一般的なタスクです。複雑な関数を考案する代わりに、次の簡潔なアプローチを利用できます。
Python または演算子は引数を順番に評価し、最初の真の値または空でない値を返します。これは解決策のように見えるかもしれませんが、リストの場合は不十分です。上で示したように、a の (1 または 2) は False と評価され、a の (2 または 1) は True と評価されます。これは、ブール コンテキストで 1 が False と評価され、その式が a.
の False と同等になるために発生します。より効率的で読みやすい方法は、リスト内包表記または共通集合を使用することです。リスト内包表記を使用すると、2 番目のリスト内の要素の存在に基づいて 1 番目のリストの要素をフィルタリングできます。例:
L1 = [2, 3, 4] L2 = [1, 2] [i for i in L1 if i in L2] # Returns [2]
あるいは、リストをセットに変換し、セットの交差を実行し、結果のセットのブール値を利用することもできます。このアプローチは、重複要素を効率的に処理する場合に有利です:
S1 = set(L1) S2 = set(L2) S1.intersection(S2) # Returns set([2])
を返します。空のリストと空のセットはどちらも False と評価されるため、ブール ロジックを使用してそれらの存在を直接評価できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3