Python - 在列表中查找输入答案,answer是列表元素之一

时间:2013-11-01 17:18:34

标签: python list

我想告诉用户是否要开始测验,并且有可能回答是,是的,是的,是的。

我想把可能的答案放在一个列表中,让python遍历列表中的每一个元素,并检查它们是否相等。

if answer.lower() == 'yeah yes yep yea'.split(): 
    .... blocks of code ....

2 个答案:

答案 0 :(得分:2)

使用in运算符:

if answer.lower() in 'yeah yes yep yea'.split():

<强>演示:

>>> 'YeAH'.lower() in 'yeah yes yep yea'.split()
True
>>> 'Yee'.lower() in 'yeah yes yep yea'.split()
False

最好先定义列表/元组,而不是每次都创建一个列表(如果你这样做是一个循环):

>>> lis = 'yeah yes yep yea'.split()
>>> 'yes' in lis
True

In Python3.2+ it is recommended to use set literals

  

Python的窥孔优化器现在可以将x in {1, 2, 3}这样的模式识别为对一组常量中的成员资格的测试。优化器   将集合重新设置为frozenset并存储预先建立的常量。

现在速度惩罚已经消失,使用set-notation开始编写成员资格测试是切实可行的。这种风格在语义上清晰且操作速度快:

if answer.lower() in {'yeah', 'yes', 'yep', 'yea'}:
    #pass

答案 1 :(得分:0)

而不是使用字符串然后拆分为什么不使用可能的答案列表?

if answer.lower() in ['yes', 'yeah', 'Yeah', 'yep', 'yea']: # you can add more options to the list
    # code