2016-12-31 99 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。

相關問題