如果在列表L中有'a'或者'b',那么(Python)

34 浏览
0 Comments

如果在列表L中有'a'或者'b',那么(Python)

我对以下逻辑有困惑:\n假设我有一个列表:\n

L = ['a', 'b', 'c']

\n


\n列表中包含这两个元素...\n

if ('a' or 'b') in L:
    print "它在里面!"
else:
    print '很抱歉'

\n输出结果为它在里面!\n


\n只有第一个元素在列表中...\n

if ('a' or 'd') in L:

\n输出结果为它在里面!\n


\n列表中没有这两个元素...\n

if ('e' or 'd') in L:

\n输出结果为很抱歉\n


\n这是一个令人困惑的问题。只有第二个元素在列表中...\n

if ('e' or 'a') in L:

\n输出结果为很抱歉\n


\n我不明白为什么这不被认为是一个真实的语句。这个如何推广到带有n个条件的语句?

0
0 Comments

问题的出现原因是在使用if ('a' or 'b') in L:这样的语句时,会出现错误的判断结果。这是因为在Python中,字符串(除了空字符串)在布尔表达式中被判断为True。在使用orand进行逻辑判断时,会返回第一个字符串或最后一个字符串的值。

具体来说,or会返回第一个字符串的值,而and会返回最后一个字符串的值。举个例子,print 'a' or 'b' # 输出: aprint 'a' and 'b' # 输出: b

当执行if ('a' or 'b') in L:时,它会先判断'a' or 'b'的值,由于'a'被判断为True,所以'a' or 'b'的值为'a'。然后它会判断'a'是否在列表L中。其他类似的情况也是基于我之前解释的原理。

因此,当执行if ('e' or 'a') in L:时,'e' or 'a'的值为'e',所以它会输出'No Sorry',因为'e'不在列表L中。

解决方法是分别比较每个元素是否在列表中,而不是一起进行判断。例如:if 'a' in L or 'b' in L:if 'a' in L or 'd' in L:if 'e' in L or 'd' in L:if 'e' in L or 'a' in L:

0
0 Comments

问题的出现原因是在判断列表L中是否存在'a'或者'b'时,使用了错误的语法。在Python中,使用if语句进行条件判断时,应该使用逻辑运算符连接多个条件,而不是将条件直接写在一起。

解决方法是将条件拆分开来,分别判断'a'和'b'是否在列表L中。正确的写法是:if 'a' in L or 'b' in L:

如果我们想要判断列表L中是否同时存在多个元素,可以使用all函数和生成器表达式。例如,如果我们想要判断列表L中同时存在'a'、'b'和'c'这三个元素,可以使用如下代码:

items = 'a', 'b', 'c'
if all(i in L for i in items):

另外,如果我们只需要判断列表L中是否存在任意一个元素,可以使用any函数。例如,如果我们想要判断列表L中是否存在'a'、'b'和'c'中的任意一个元素,可以使用如下代码:if any(i in L for i in items)

0
0 Comments

问题的出现原因是在Python中,当使用逻辑运算符'or'时,如果表达式中的第一个值为真,则整个表达式将返回第一个值;如果第一个值为假,则整个表达式将返回第二个值。因此,在表达式('e' or 'a')中,'e'为非空字符串,因此该表达式将返回'e'。

解决方法是使用更通用的方法来检查列表中是否至少包含一项值。可以使用'any'函数结合生成器表达式来实现。

具体的解决方法是使用以下代码:

if any(c in L for c in ('a', 'e')):

这将检查列表L中是否存在任意一个值为'a'或'e'的元素。如果存在,则条件为真;如果不存在,则条件为假。

通过使用'any'函数和生成器表达式,可以更灵活地检查列表中是否包含特定的值,而不仅仅是检查单个值。这种方法可以适用于任意数量的值,并且可以在列表中的任意位置查找这些值。这样可以更好地满足不同的需求和条件。

0