当前位置: 首页 > 知识库问答 >
问题:

如果L中的'a'或'b',其中L是一个列表(Python)[重复]

贺栋
2023-03-14

我对以下逻辑有问题:

假设我有一个列表L=['a','b','c']

这两项都在列表中。。。

if ('a' or 'b') in L:
    print 'it\'s there!'
else:
    print 'No sorry'

打印它就在那里

列表中只有第一项。。。

if ('a' or 'd') in L:
    print 'it\'s there!'
else:
    print 'No sorry'

打印它就在那里

列表中的任何一项...

if ('e' or 'd') in L:
    print 'it\'s there!'
else:
    print 'No sorry'

打印没有抱歉

这是令人困惑的一个,只是列表中的第二项。。。

if ('e' or 'a') in L:
    print 'it\'s there!'
else:
    print 'No sorry'

打印没有抱歉

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

用3,2,1…简单回答拍打额头


共有3个答案

漆雕彦
2023-03-14

当字符串(空字符串除外)被求值为布尔值时,它们将始终求值为True。当使用或/和进行计算时,都将返回True,但它们之间有一点区别:

print 'a' or 'b'    # Output:  a
print 'a' and 'b'   # Output:  b

:将返回第一个字符串:将返回最后一个字符串

当你这样做的时候

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

,它将检查'a'或'b'哪个是'a',然后检查'a'是否在L中。类似的情况也发生在其他案例中(根据我之前的解释)。

所以当你这么做的时候

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

'e'或'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:
阙阳
2023-03-14

改用这个:

 if 'a' in L or 'b' in L:

如果我们想检查这些“项目”是否都在列表中,all和生成器理解是您的朋友:

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

或者,如果列表中有任何项目,请使用any

if any(i in L for i in items)
公西俊民
2023-03-14
匿名用户

让我们将表达式分解为:

('e'或'a')将首先检查'e'是否为真。如果是,表达式将返回'e'。如果不是,它将返回'a'

由于所有非空字符串都返回True,因此此表达式将始终返回'e'。这意味着L:中的if('e'或'a')可以翻译为if'e'在L中,在本例中为False

检查列表是否包含一组值中的至少一个值的更通用的方法是使用与生成器表达式耦合的任何函数。

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

 类似资料:
  • 问题内容: 我在以下逻辑上遇到麻烦: 可以说我有一个清单 这两个项目都在列表中… 版画 列表中只有第一项… 版画 列表中都没有… 版画 这是一个令人困惑 的列表中仅 第二 项… 版画 我不明白为什么这没有注册为真实的陈述。如何将其推广到具有 n个 条件的 or 语句? __ 3、2、1 … 问题答案: 让我们分解一下表达式: 首先会检查是否为True。如果是,则表达式将返回。如果没有,它将返回。

  • 以下两种声明的区别是什么 如果不是,那么为什么在java 7ie

  • 问题内容: 我有一个可以接收零或三个命令行参数的python脚本。(要么以默认行为运行,要么需要指定所有三个值。) 诸如此类的理想语法是什么? ? 问题答案: 如果您要使用的是最小形式,请执行以下操作: 这将翻译您的问题的标题。 更新:正如Volatility and Supr正确地说的那样,您可以应用De Morgan的定律并获得等效的: 我的建议是使用对您和其他程序员更重要的形式。第一个意思是

  • L++

    L++ 是一个编程语言,最终转换成 C++。使用 Lisp 风格的语法。 Hello World: (main  (prn "Hello, World!"))

  • l-passport 集成微信(wechat)、QQ(qq)、百度(baidu)和微博(weibo)于一体的koa中间件与API SDK 功能列表 OAuth授权 获取用户基本信息 koa2中间件,开发者可以通过此中间件获取用户的基本信息(包括用户编号、昵称、头像) Installation npm install l-passport -S Usage Authentication 引入l-pa

  • 我已经使用玩了一段时间。是否有任何简单的方法将放入中的项目?我尝试在中实现它。onClick事件从未被触发。 并且我使用向中添加新值。UI不会自动刷新。需要上下拉来刷新。但是当我调用时,它就可以了。 谢谢你的建议。 这是我测试的第一个Android L组件,我正在那里堆放。 下面是我的适配器类: