循环 Python 列表,同时追加和迭代新值/新值



我目前正在构建一个图像像素迭代器,我正在 2D 网格上选择一个点并向外迭代(向上、向下、向左、向右等)。在开发过程中,我编写了一个这样的 for 循环,看看它是如何工作的:

expanding = [1, 2]
# Expected functionality: continues to iterate "3" forever.
for expand in expanding:
expanding.append(3)

我希望这在一个无限循环中继续下去,迭代序列看起来像:123333...等等。尽管由于我的输出结构,它似乎只在2关闭。

我的这部分算法的任务是通过选择随机坐标并向外扩展将图像分解为其颜色组,检查颜色范围是否与父颜色相差太远,因此需要一个连续迭代器,直到它最终确定。

用途是能够简单地附加到数组中,以便在将来迭代,而无需在继续之前完成数组并删除特定元素,作为"实时循环"。

我刚刚通过使用"枚举"方法来包装列表来自己尝试过这个,下面的代码完成了你的要求:

my_list = [1,2]
for i, element in enumerate(my_list):
my_list.append(3)

您可能需要为此查看另一种数据结构,例如队列或堆栈。

作为一个非常非常糟糕的例子,有一些图算法与下面的逻辑相差不远:

seen = set()
stack = [1]
while stack:
current = stack.pop()
if current in seen or abs(current) > 5:
continue
seen.add(current)
print 'Processed %s' % current
stack.append(current + 1)
stack.append(current - 1)

将提供

Processed 1
Processed 0
Processed -1
Processed -2
Processed -3
Processed -4
Processed -5
Processed 2
Processed 3
Processed 4
Processed 5

这是一篇关于不更改您正在迭代的容器的原因的文章,即使你可以。

如何使用 while 循环并在完成后中断:

my_list = [1,2]
while True:
my_list.append(3)
if #(check if out of range):
break

最新更新