Python を使用したリスト内の要素の不在の確認
Python では、リスト内に要素が存在しないことを確認するには、 「not in」演算子。ただし、タプルのリストを操作するときによくある落とし穴が発生します。
初期コード:
提供されたコード内:
if curr_x -1 > 0 and (curr_x-1 , curr_y) not in myList: # Do Something
プログラマ特定のタプル (curr_x-1、curr_y) が myList にない場合にのみ 'if' 分岐を実行することを目的としています。ただし、コードは誤動作しているようです。
問題の原因:
この問題は、myList にない論理式 (curr_x-1 、curr_y) に起因するものではありません。 。この式は、次の例に示すように、リストにタプルが存在しない場合は True と正しく評価され、存在する場合は False と評価されます。
>>> 3 not in [2, 3, 4] False >>> 3 not in [4, 5, 6] True
タプルとリスト:
バグはコード内の別の場所にある可能性があります。リストとは異なり、Python ではタプルは不変です。これは、タプルを一度作成すると変更できないことを意味します。これを変更しようとすると、TypeError が発生し、「not in」演算子の操作が中断される可能性があります。
解決策:
潜在的な問題を回避するには問題がある場合は、リスト内のタプルと不在をチェックしているタプルがコード全体で変更されていないことを確認してください。変更する必要がある場合は、タプルの代わりにリストの使用を検討してください。
以上がPython のタプルで「not in」が期待どおりに機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。