def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
我以爲[1,2,3]
是一個列表,但不是一個布爾表達式,可以是True或False?但爲什麼函數認爲列表([1,2,3])
爲真?if後可以做些什麼?
def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
我以爲[1,2,3]
是一個列表,但不是一個布爾表達式,可以是True或False?但爲什麼函數認爲列表([1,2,3])
爲真?if後可以做些什麼?
任何表達式都可以用作if
或while
中的條件。請參閱https://docs.python.org/2.4/lib/truth.html瞭解如何評估表達式的真值。
如在規定的python documentation on "Truth Value Testing":
以下值被認爲是假:
[...]
- 任何空序列,例如,
''
,()
,[]
。[...]
所有其他值被認爲是真實的 - 這麼多類型的對象總是如此。
因此,任何不空列表將被評估爲True
和任何Python對象可以在布爾上下文進行評估(如果它不拋出異常,在它的__bool__
或__len__
方法,例如像numpy.ndarray
)。
據我所知,任何類型的表達式都將被視爲「真」,除非它是一個空列表/元組,空字符串(在技術上也可以被認爲是一個字符列表)或數字0.
PS正如一個有趣的事實,數字0.000001返回True。
也許這樣?
def checkList():
if all(x in list2 for x in list1):
return [ 2,3,4 ]
list1= [ 1,2,3 ]
list2= [ 1,2,3 ]
print(checkList(list1,list2))
你真的需要這個SAnyway到這裏看看:https://docs.python.org/3/library/stdtypes.html#truth-value-testing
任何[不空單(https://docs.python.org/3/library/stdtypes.html#truth-價值測試)被認爲是真實的。 – MSeifert
任何需要布爾表達式的表達式都可以使用。 – Barmar
檢查[真值測試](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)以查看Python中被認爲是真和假的內容。 –