1

私は少し前にPythonを独学しましたが、このロジックを継続的に実行していることに気づきました...

listA の要素が listB にある場合、何とか何とか...

これを次のようにコーディングします。

for i in listA: 
    if i in listB:
        do something

これに遭遇する頻度を考えると、これをコーディングするより効率的な方法があるに違いないと思いますか?

前もって感謝します。

4

3 に答える 3

4

はい、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
于 2013-10-07T00:07:23.557 に答える
2

何かを 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
于 2013-10-07T00:08:28.520 に答える