2016-12-31 68 views
-8
def check(): 
    if [1,2,3]: 
     return [2,3,4] 

check() 
[2, 3, 4] 

我以为[1,2,3]是一个列表,但不是一个布尔表达式,可以是True或False?但为什么函数认为列表([1,2,3])为真?if后可以做些什么?

+2

任何[不空单(https://docs.python.org/3/library/stdtypes.html#truth-价值测试)被认为是真实的。 – MSeifert

+0

任何需要布尔表达式的表达式都可以使用。 – Barmar

+1

检查[真值测试](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)以查看Python中被认为是真和假的内容。 –

回答

0

如在规定的python documentation on "Truth Value Testing"

以下值被认为是假:

[...]

  • 任何空序列,例如,''()[]

[...]

所有其他值被认为是真实的 - 这么多类型的对象总是如此。

因此,任何不空列表将被评估为True和任何Python对象可以在布尔上下文进行评估(如果它不抛出异常,在它的__bool____len__方法,例如像numpy.ndarray)。

0

据我所知,任何类型的表达式都将被视为“真”,除非它是一个空列表/元组,空字符串(在技术上也可以被认为是一个字符列表)或数字0.

PS正如一个有趣的事实,数字0.000001返回True。

相关问题