Python if/elif简化

0 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].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)
Run Code Online (Sandbox Code Playgroud)

我只想弄清楚它是否可以以某种方式简化,但我真的无法想出任何东西.有什么想法吗?

谢谢!

mgi*_*son 8

以下是与上述内容完全相同的代码:

if any(animals[x].upper() in line for x in range(11)):
    break
Run Code Online (Sandbox Code Playgroud)

假设它animals支持迭代器协议(这可能是真的),更好的解决方案是做这样的事情:

if any(animal.upper() in line for animal in animals):  # slice animals as necessary
    break
Run Code Online (Sandbox Code Playgroud)

  • @JonClements - 我不这么认为.`线="獾';动物= ['獾’]`此致返回TRUE,OP的返回`FALSE`(动物应该是在该行,而不是在动物中的线)另外,它.不适用于python3.x ;-) (2认同)