python如何检查列表不包含任何值

d.p*_*tto 6 python python-2.7 python-3.x

考虑这个简单的功能

def foo(l=[]):
    if not l:  print "List is empty"
    else : print "List is not empty"
Run Code Online (Sandbox Code Playgroud)

现在让我们打电话给foo

x=[]
foo(x)
#List is empty

foo('')
#List is empty
Run Code Online (Sandbox Code Playgroud)

但如果x = [''],则列表不被视为空!

x=['']
foo(x)
#List is not empty
Run Code Online (Sandbox Code Playgroud)

问题 -

  1. 为什么空值列表不被视为空?(在变量的情况下,它被认为是空的,例如)

    x=''
    if x:print 'not empty!!'
    else: print 'empty'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如何修改函数foo(),以便列表将在所有这些情况下被视为空:x=[],x=[''],x=['', '']

Chr*_*tts 13

使用内置 any()

def foo(l=[]):
    if any(l):
        print 'List is not empty'
    else:
        print 'List is empty'

foo([''])
# List is empty
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于`[['']]`,这将"失败".但是,无论如何,我不确定OP正在做什么是明智的.更重要的是,这对于"[false]"失败了. (2认同)