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的循环,用它代替数字。