【发布时间】:2025-12-26 00:45:20
【问题描述】:
问题很简单,我有一个返回列表的方法。 我想遍历这个列表中的每个项目,一旦完成, 调用该方法接收一个新列表,然后重复。
目前,我的代码如下所示:
generator = iter([])
while Condition:
try:
item = next(generator)
except StopIteration:
generator = iter(list_returining_method())
item = next(generator)
...
但是,以前,我使用的是嵌套的 for 循环。
while Condition:
for item in list_returining_method():
...
虽然我之前的尝试看起来在某些方面更好,但我目前的方法有一些“优势”:
- 如果 Condition 设置为 false,则循环结束而无需将
break退出 for 循环。- 上述原因的扩展,可以访问 Condition 的方法可以结束循环而不遍历所述列表中的所有其他项目,或者在 for 循环中执行特殊检查。
- 第一种方法允许在需要时跳过循环中的项目。
- 还少了一级缩进。这比其他任何东西都更虚荣,但考虑到实际代码是类方法的一部分,缩进级别已经相当高了。
至少可以说,我困惑哪个更合适。它们似乎都有独特的优点和缺点,所以如果有人知道最正确和最pythonic的方法,我将不胜感激。
【问题讨论】: