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中被认为是真和假的内容。 –