pythonif/elif简化

pythonif/elif简化,python,if-statement,simplification,Python,If Statement,Simplification,这是我代码的一部分: 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].up

这是我代码的一部分:

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)
我只是想知道它是否可以简化,但我真的什么都想不出来。有什么想法吗


谢谢

这里有一段与上面的代码完全相同的代码:

if any(animals[x].upper() in line for x in range(11)):
    break
假设动物支持迭代器协议(这很可能是真的),更好的解决方案是这样做:

if any(animal.upper() in line for animal in animals):  # slice animals as necessary
    break

如果mapstr.upper中的行是动物[:11]?@JonClements-我不这么认为。直线=獾';动物=[獾]。你的返回为真,OP的返回为假。动物应该在队伍里,而不是动物的队伍里。另外,它在python3.x上不起作用-妈的,你比我早PI可能会与AnyAnyAnimal.upper一起用于动物中的动物[:11],或者如果动物总是11个元素的长度,则删除该切片,因为它可能是。@user2357112-是的,这样更好。谢谢这就是我在午夜编码的方法。尝试一个增加到10的循环,用它代替数字。