如何循环 startswith 方法

How to loop on startswith method

我需要检查输入的第一个单词是否在我的列表中

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 块可以从字面上解释为: 如果 namemyList 中的任何一项开始,则打印 'correct'

startswith already supports this natively, just pass it a tuple as the prefix argument, rather than a single str:

if name.startswith(("Tim", "Anna", "Noah", "Justin")):

如果它以 tuple 的任何元素开头,则为真,并且如果 tuple 像本例一样是文字,则它是在编译时生成并缓存的,因此性能好得离谱。在引擎盖下,它只是一个一个地循环,如果它被击中则短路,但你不必自己编写循环。