我问这个问题是因为我知道以下检查列表是否为空的pythonic方法:
my_list = []
if not my_list:
print "computer says no"
else:
# my_list isn't empty
print "computer says yes"
将打印computer says no
等,所以这让我找出[]
与False
真值;
但是,如果我尝试将[]和False直接“比较”,则会获得以下信息:
>>> my_list == False
False
>>> my_list is False
False
>>> [] == False
False
等等…
这里发生了什么?我觉得我确实缺少一些明显的东西。
该if
语句在布尔上下文中评估所有内容,就像对bool()
内置函数的隐式调用一样。
这是您实际检查if
语句如何评估事物的方式:
>>> bool([])
False
>>> bool([]) == False
True
参见真值测试文档,空列表被 认为是错误的 ,但这并不意味着它们等同于False
。
PEP
285
也有它为什么以这种方式实现一些优秀的信息,请参阅在非常最后一颗子弹
已解决的问题 部分的一部分,随着交易x == True
和x == False
明确。
最有说服力的方面我是==
一般传递的,所以a == b
和b == c
暗示a == c
。因此,如果这是您所期望的方式,[] == False
并且'' == False
是正确的,那么您可能会认为它[] == ''
应该是正确的(即使它显然不应该使用没有隐式类型转换的语言)。
我这样问是因为我知道检查列表是否为空的python方法如下: 将打印,等等。因此,这导致我用真值识别;但是,如果我试图“直接”比较[]和False,我会得到以下结果: 等 这到底是怎么回事?我觉得我错过了一些非常明显的东西。
我正在尝试编写一个SeleniumWebDriver测试,它可以导航到Google,搜索一些东西,然后验证Google是否搜索了输入的内容。然而,下面的代码给出了一个“false”输出,当我看到它是真的时。 我在这个场景中找到的所有代码似乎都是Google Instant之前的代码,我无法在FirefoxDriver中关闭Instant。它还应该等待网页,图像,视频等酒吧被点击之前,检查任何东西;
问题内容: 我真的不明白这是如何解析的。为什么第二个示例返回False? 谢谢你的帮助。我想我一定会错过一些非常明显的东西。 我认为这与链接重复项有细微不同: 为什么表达式0 <0 == 0在Python中返回False? 。 这两个问题都与人类对表达的理解有关。在我看来,似乎有两种评估表达方式的方法。当然,两者都不正确,但是在我的示例中,最后的解释是不可能的。 看着您可以想象每个被评估的部分都可
问题内容: 我遇到了这个表达式,我认为应该评估为True,但事实并非如此。 上面的语句按预期工作,但在以下情况下: 执行后,其结果为False。 我尝试搜索答案,但无法获得具体答案。谁能帮助我了解这种行为? 问题答案: 是一个运营商链,就像您 要做到这一点,您需要 和 都是如此。后者是错误的,因此是结果。添加括号不会再使运算符链接(某些运算符在括号中),这可以解释工作原理。 尝试: 再一次,一个很
本篇文档对实验评估的使用流程进行介绍,包括实验评估的基本概念,实验评估的使用流程。 1.1. 基本概念与数据指标 优化指标 用来衡量实验效果的数据度量,优化指标跟实验设计初衷相关,是期望通过实验提高的数据度量。优化指标,典型如:提交订单的金额,支付的转化率。 UV 去重用户数,实际计算中会在所选时间段内去重。AB测试中一般跟实验版本对应,用以表示某个实验版本中参与用户数。 事件的触发次数 某一个事
问题内容: 在SQL Server中,如果 在where子句中,则其总值为false。这是违反直觉的,并导致了我很多错误。我确实了解和关键字是正确的方法。但是,为什么SQL Server会以这种方式表现呢? 问题答案: 在这种情况下,请将null视为“未知”(或“不存在”)。在这两种情况下,您都不能说它们相等,因为您不知道它们的价值。因此,null = null的计算结果不为true(false或