我有一个nodelist对象node在迭代时产生一堆对象.我需要根据一些随机条件(如node.x > 17)增加这些节点.这就是我现在正在做的事情:
for node in nodelist:
if node.x > 17:
node.x += 1
Run Code Online (Sandbox Code Playgroud)
我不能这样做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
Run Code Online (Sandbox Code Playgroud)
甚至可以压缩成一行.但老实说,我更喜欢你现在的方式.