我在检查列表

时间:2018-04-02 16:58:30

标签: python python-2.7

我正在使用if条件检查列表中的两个值,而下面的python中的另一个字符串不应该在列表中是我的代码但是它输出错误

lis = ['a','b','c','d','e','f'] #list values or lis =[]
if ('z' or 'a') and not 'x' in lis :
    print "yes"
else :
    print "no"

,输出

yes 

有什么不对吗?

3 个答案:

答案 0 :(得分:1)

在您的代码中,if语句的评估方式如下:

  • ('z' or 'a') - > 'z' truthy
  • not 'x' in lis - > True

因此,它变为if 'z' and True,即True

请改用此代码:

lis = ['a', 'b', 'c', 'd', 'e', 'f'] 
if any(item in lis for item in ('z', 'a')) and 'x' not in lis:
    print 'yes'
else:
    print 'no'

这将检查元组('z', 'a')中的任何项目是否在列表中,以及'x'是否不在。

答案 1 :(得分:1)

('z' or 'a')评估为真值('z'),因此您获得yes作为输出。

lis = ['a','b','c','d','e','f'] #list values or lis =[]
if 'z' in lis or 'a' in lis and not 'x' in lis :
    print "yes"
else :
    print "no"

答案 2 :(得分:-1)

在第一个条件中,您正在制作一个被认为是真的通用语句。如果您想查看za是否在lis中,它应如下所示:

lis = ['a','b','c','d','e','f'] #list values
if ('z' or 'a') in lis and not 'x' in lis :
    print "yes"
 else :
     print "no"