问题描述
我需要检查输入的第一个单词是否在我的列表中
name = input("type your name: ")
if name.startswith("Tim") or name.startswith("Anna") or name.startswith("Noah") or name.startswith("Justin"):
print('correct')
else:
print('false')
我需要以更好的方式编写它,例如:
myList = ['Tim','Anna','Noah','Justin']
name = input("type your name: ")
if name.startswith(*any name in my list*):
print('correct')
解决方法
使用列表解析和任意关键字:
myList = ['Tim','Anna','Noah','Justin']
name = input("type your name: ")
if any([name.startswith(item) for item in myList]):
print('correct')
else:
print('false')
if
块可以从字面上解释为:
如果 name
以 myList
中的任何项目开头,则打印“正确”
if name.startswith(("Tim","Anna","Noah","Justin")):
如果它以tuple
的任何一个元素开头都是真的,而如果tuple
是这种情况下的文字,它是在编译时生成并缓存的,所以性能很荒谬好的。在引擎盖下,它只是一个接一个地循环并在它被击中时短路,但您不必自己编写循环。