当前位置: 首页 > 面试题库 >

空列表布尔值

谷涵容
2023-03-14
问题内容

这可能只是白痴,但对我来说有点混乱:

In [697]: l=[]

In [698]: bool(l)
Out[698]: False

In [699]: l == True
Out[699]: False

In [700]: l == False
Out[700]: False

In [701]: False == False
Out[701]: True

为什么在l==False返回FalseFalse == False返回True


问题答案:

您正在根据布尔值的文字值检查它False。一样'A' == False不会是真的。

如果将其投射,您将看到区别:

>>> l = []
>>> l is True
False
>>> l is False
False
>>> l == True
False
>>> l == False
False
>>> bool(l) == False
True

究其原因False == False是真实的,因为你是比较相同的对象。与2 == 2或相同'A' == 'A'

当您看到类似的东西if l:并且此检查从未通过时,困难就来了。那是因为您正在检查项目的 真实值 。按照惯例,所有这些项目都将通过布尔检查失败-
也就是说,它们的布尔值将为False

  • None
  • False (明显)
  • 任何空序列:''[]()
  • 任何“零”值:00.0,等。
  • 任何空集合:({}一个空字典)
  • 任何len()回报0

这些称为“假”值。 _ 其他一切都是“真实的”_ 。这可能会导致一些奇怪的事情,例如:

>>> def foo():
...   pass
...
>>> bool(foo)
True

在这里还需要注意的是 ,不返回显式值的方法总是将None其返回类型作为其返回类型,从而导致以下问题:

>>> def bar():
...   x = 1+1
...
>>> bool(bar)
True
>>> bool(bar())
False


 类似资料:
  • 我知道我可以测试列表是否为空,如下所示: 但我不明白为什么下一个代码不是等效的:

  • 嘿,好吧,所以我在阅读Python的文档,它指出任何空字符串、列表、字典,我想它们都被称为对象(我真的不理解对象的概念:\n如果有人能向我解释,我会很高兴)。无论如何,我的问题是

  • 问题内容: 所以我有一个关于考试作业的问题,在这个作业中,我们有一堆布尔表达式,例如: 然后,我们应该编写布尔表达式的值。为此,我使用了三值逻辑,但是当您获得如下所示的布尔表达式时,这将如何应用: 或者 通过三值逻辑可以很容易地找到第一个,但是我如何找出另外两个。 我知道这是一个非常基本的问题,但是我对此仍然是陌生的。 提前致谢 问题答案: 您需要布尔值和的三相真值表: 该表是缩写,依赖于布尔逻辑

  • 问题内容: 我有一个值列表,需要根据给定的布尔值列表中的值进行过滤: 我使用以下行生成一个新的过滤列表: 结果是: 这条线工作正常,但是(对我而言)看起来有点过大了,我想知道是否有更简单的方法来实现这一目标。 忠告 以下答案提供了两个好的建议: 1-不要像我一样命名列表,因为它是内置函数。 2-不要比较像我做的事情,因为这是不必要的。只需使用就足够了。 问题答案: 您正在寻找: 时序比较(py3.

  • 编辑:在阅读了建议的链接后,我不知道为什么这被标记为重复。告我。 有人能帮我理解为什么删除值吗? 采取以下措施: 返回 返回 所以我想,Python一定认为是!但令我惊讶的是,返回! A) 我错过了什么? B) 如何仅从中筛选值?

  • 问题内容: 我在Python中有一个布尔列表 我想将其更改为与逻辑相反 的方法吗?在Python中是否有一种内置的方法(类似于call )可以执行此操作,而无需使用手写循环来反转元素? 问题答案: 列表理解很容易: 产量