def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
我认为[1,2,3]
是一个列表但不是布尔表达式,可以是True还是False?但为什么函数会将列表([1,2,3])
视为True?
答案 0 :(得分:0)
任何表达式都可以用作if
或while
中的条件。有关如何评估表达式的真值,请参见https://docs.python.org/2.4/lib/truth.html。
答案 1 :(得分:0)
如python documentation on "Truth Value Testing"中所述:
以下值被视为false:
[...]
- 任何空序列,例如
''
,()
,[]
。[...]
所有其他值都被认为是真的 - 因此许多类型的对象始终为真。
因此任何非空列表都将被评估为True
,并且任何python对象都可以在布尔上下文中进行计算(如果它没有在其中抛出异常' s {{1} }或__bool__
方法,例如__len__
)。
答案 2 :(得分:0)
据我所知,任何类型的任何表达都将被视为" True"除非它是一个空列表/元组,一个空字符串(在技术上也可以被认为是一个字符列表)或数字0。
P.S。同样有趣的是,数字0.000001返回True。
答案 3 :(得分:-1)
也许是这样的?
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