Python 检查列表中的字符串值时出错

Python 检查列表中的字符串值时出错,python,python-2.7,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 有什么问题吗 在第一个条件中,您所做的一般性陈述被认为是正确的。如果要查看z或a是否位于lis中

我正在使用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 

有什么问题吗

在第一个条件中,您所做的一般性陈述被认为是正确的。如果要查看
z
a
是否位于
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"

在代码中,
if
语句的计算结果如下:

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"
  • ('z'或'a')
    ->
    'z'
    (这是真实的)
  • 不是lis中的“x”
    ->
    True
因此,如果'z'和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'
是否在列表中。

('z'或'a')
的计算结果为真实值(
'z'
),因此您将得到

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"

这是一个问题还是一种观点?不管是哪种方式,如果你的
没有达到你认为的效果。我现在用java但用python提问如何达到这个要求!!!上述代码的输出将为
yes
,因为
条件为
True
。[在'z'或'a'中,列表有'a'。而列表没有任何'x'。@DanielRoseman:这两个条件之间有一个'and'子句。我同意第一个条件总是
True
,第二个条件基于
lis
的元素。组合这两个条件(第二个条件中的给定数据)将产生“是”的结果。lis=['a','b','c','d','e','f']if('z'在lis中或'a'在lis中)而不是'y'在lis中:print('yes')否则:print('no')将满足您的要求,如果lis中的('z'或'a'),而不是lis中的'x':输出为“否”这是错误的输出,请检查在这个问题是编辑后,我回答。你最初有if('z'或'z'),这让我觉得你在寻找“否”,但得到的是“是”,这就是我的答案…@ParaM答案是正确的,输出偶数列表是空的如果('z'在lis中或'a'在lis中),而不是'x'在lis中:这个输出是正确的真实值是什么??@ParaM,看看@ParaM,如果lis=[]仍然以任何方式@keyuor diamond输出为“是”,则括号内的thx帮助