我正在写一些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程序员:
在代码美/可维护性和性能/内存使用的上下文中哪一个更好。
答案 0 :(得分:8)
在这种情况下,前者更可取。
后者称为list comprehension,并创建一个新的list
对象,其中包含每次调用parent.appendChild(c)
的结果。 然后丢弃它。
但是,如果你希望根据这种迭代制作list
,那么你当然应该使用列表理解。
答案 1 :(得分:0)
代码美/可维护性的问题是一个棘手的问题。这取决于你和你合作的人。
很长一段时间我对列表理解等感到不舒服,并且首选它是第一种方式,因为它更容易阅读。然而,我工作的一些人更喜欢第二种方法。