带循环的Python循环

时间:2011-06-11 22:26:35

标签: python for-loop python-3.x

我正在写一些Python 3.2代码,这个问题来找我:

我有这些变量:

# a list of xml.dom nodes (this is just an example!)
child_nodes = [node1, node2, node3]
# I want to add every item in child_node into this node (this also a xml.dom Node)
parent = xml_document.createElement('TheParentNode')

这正是我想要做的事情:

for node in child_nodes:
    if node is not None:
        parent.appendChild(node)

我用这样的一行写了:

[parent.appendChild(c) for c in child_nodes if c is not None]

我根本不会使用列表结果,我只需要appendChild来完成它的工作。

我不是一个非常有经验的python程序员,所以我想知道哪个更好? 我喜欢单线解决方案,但我想知道有经验的python程序员:

在代码美/可维护性和性能/内存使用的上下文中哪一个更好。

2 个答案:

答案 0 :(得分:8)

在这种情况下,前者更可取。

后者称为list comprehension,并创建一个新的list对象,其中包含每次调用parent.appendChild(c)的结果。 然后丢弃它

但是,如果你希望根据这种迭代制作list,那么你当然应该使用列表理解。

答案 1 :(得分:0)

代码美/可维护性的问题是一个棘手的问题。这取决于你和你合作的人。

很长一段时间我对列表理解等感到不舒服,并且首选它是第一种方式,因为它更容易阅读。然而,我工作的一些人更喜欢第二种方法。