Skip to main content
 首页 » 编程设计

python之for循环中更清晰的分配(python)

2025年05月04日14dyllove98

我有一个 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 

甚至可以压缩成一行。但老实说,我更喜欢你现在拥有它的方式。