Python样式:for-in语法,检查空列表和字典

时间:2010-10-03 17:30:20

标签: python list idioms

我是python的新手,还没有读过很多代码来验证哪些样式被认为是'pythonic'。

当我开始编码时,我一直在使用这种模式。

listThatMightBeEmpty = []
for items in listThatMightBeEmpty:
    print "this may or may not print but the loop won't cause any errors"

我认为首先检查列表是否为空是多余的 - 如果列表为空,我可以让for-in循环不执行任何操作。但我想确保在任何情况下都没有任何问题,包括使用旧版本的python,包括在字典上使用for-in循环,使用enumerate()或iteritems(),或使用列表推导等。< / p>

3 个答案:

答案 0 :(得分:2)

是的,你是对的。这里没有陷阱。您可以在空列表中使用它。

答案 1 :(得分:1)

要检查列表是否为空,您可以执行以下操作:

>>> x = []
>>> if not x:
         # do something

如果列表为空,# do something将运行,您可以在那里处理执行。

但是,您的方法没有任何问题。

答案 2 :(得分:1)

是的,它是多余的(除非您想为空输入执行特殊操作)。

通常,for循环和返回另一个可以迭代的东西的函数如果输入零项,则不会给出任何“令人惊讶的行为”。这包括enumerate()iteritems(),甚至切片([][1:] == [])。

>>> list( enumerate([]) )
[]
>>> list( {}.iteritems() )
[]
>>> [][1:]
[]
>>> [x*x for x in []]
[]