在 Python 中迭代嵌套对象的优雅方法是什么?我目前正在使用如下的嵌套循环。
for job in jobs:
for task in job.tasks:
for command in task.commands:
print command.actual_cmd
有没有更好的方法更Pythonic?
最佳答案
您可以设置链式生成器以降低缩进级别。
iter_tasks = (task for job in jobs for task in job.tasks)
iter_commands = (command for task in iter_tasks for command in task.commands)
for command in iter_commands:
print(command.actual_cmd)
我同意 OldBunny2800在三个嵌套循环的情况下,链接生成器在可读性方面可能不会给你带来太多好处。
如果您的嵌套逻辑比这更深,生成器就会开始变得有吸引力。不仅缩进级别得到控制,您还可以为每个生成器分配一个有意义的变量名称,有效地为 for
循环命名。
关于Python - 迭代嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62145216/