为什么列表中包含空字符串?

时间:2019-04-17 15:09:10

标签: python-3.x

我在工作中发现了一些问题,返回了包含空字符串的列表。为了简单起见,我创建了一个示例:

big_ol_trickster = [""]
if big_ol_trickster:
    foo()
else:
    print("You can't trick me!")

这个条件每次都会得到满足。因此,我对那里的python向导有一个疑问:为什么[] == False"" == False却是[""] == True

1 个答案:

答案 0 :(得分:3)

列表为Falsey[""]不为空。它包含一个元素(也恰好是Falsey)。 Falsey-ness不会递归评估。

要知道为什么,请查看list类的__bool__ dunder方法的实现。该方法用于评估python中的真值。而且,是的,您可以覆盖它。

[False, False]->这也是Truthy,它可能违反直觉。这就是为什么当您尝试在条件中使用序列时有时会得到"truth-value of sequences can be ambiguous, use any() or all() instead"

的原因