私は少し前にPythonを独学しましたが、このロジックを継続的に実行していることに気づきました...
listA の要素が listB にある場合、何とか何とか...
これを次のようにコーディングします。
for i in listA:
if i in listB:
do something
これに遭遇する頻度を考えると、これをコーディングするより効率的な方法があるに違いないと思いますか?
前もって感謝します。
はい、any()
関数:)。
if any(i in listB for i in listA):
do something
"do something"
これは、一度やりたいと仮定しています。実際に何かをしたいi
場合(それが にある場合listB
)、行ったように for ループを使用します。
any(i in listB for i in listA)
. 以下とほとんど同じです:
for i in listA:
if i in listB:
return True
return False
何かを 1 回行う必要があるのか、listA のすべての要素に対して 1 回行う必要があるのかは不明です。
したがって、一度何かを行う必要がある場合は、それらをセットに変換し、交差が 0 より大きいかどうかを確認します。
if (set(listA)).intersection(set(listB)):
do something
すべての要素に対して何かを行う必要がある場合は、繰り返される値をスキップします。
intersection = (set(listA)).intersection(set(listB))
for el in intersection:
do something
そして、繰り返されるかどうかに関係なく、すべての要素に対して何かをする必要がある場合:
for element in listA:
if element in listB:
do something