什么可以是一个声明后?

时间:2016-12-31 00:01:41

标签: python if-statement

def check():
    if [1,2,3]:
        return [2,3,4]

check()
[2, 3, 4]

我认为[1,2,3]是一个列表但不是布尔表达式,可以是True还是False?但为什么函数会将列表([1,2,3])视为True?

4 个答案:

答案 0 :(得分:0)

任何表达式都可以用作ifwhile中的条件。有关如何评估表达式的真值,请参见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