0

これは私のコードの一部です:

for line in f:
    if animals[0].upper() in line:
        break
    elif animals[1].upper() in line:
        break
    elif animals[2].upper() in line:
        break
    elif animals[3].upper() in line:
        break
    elif animals[4].upper() in line:
        break
    elif animals[5].upper() in line:
        break
    elif animals[6].upper() in line:
        break
    elif animals[7].upper() in line:
        break
    elif animals[8].upper() in line:
        break
    elif animals[9].upper() in line:
        break
    elif animals[10].upper() in line:
        break
    print(line)

どういうわけか単純化できるかどうかを理解しようとしていますが、実際には何も思いつきません。何かご意見は?

ありがとう!

4

1 に答える 1

8

上記のものと完全に同等のコードを次に示します。

if any(animals[x].upper() in line for x in range(11)):
    break

がイテレータ プロトコルをサポートしていると仮定するとanimals(これはおそらく本当です)、さらに良い解決策は次のようにすることです。

if any(animal.upper() in line for animal in animals):  # slice animals as necessary
    break
于 2013-12-09T09:14:28.953 に答える