我有一个 nodelist 对象,它在迭代时产生一堆 node 对象。我需要根据一些随机条件(如 node.x > 17)增加这些节点。这是我现在正在做的事情:
for node in nodelist:
if node.x > 17:
node.x += 1
我不能执行 map(lambda node: node.x += 1, nodelist) 因为 lambda 不能包含赋值。我不能执行 nodelist = [node.x + 1 for node in nodelist if...] 因为 nodelist 对象不仅仅包含其子节点。
有没有办法让这个更短/更干净?
请您参考如下方法:
我认为它已经非常简短和干净了。 Python 提供了一些强大的工具,但有时简单才是最好的;这似乎是那些时代之一。
我还认为你所拥有的比任何等效的单行代码(我能想到的)都更具可读性。
好吧,就是说,你可以这样做:
for node in (n for n in nodelist if condition):
node.x += 1
甚至可以压缩成一行。但老实说,我更喜欢你现在拥有它的方式。
