Py学习  »  Python

在追加和迭代新值时循环python列表

Jack Hales • 4 年前 • 631 次点击  

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

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

我希望这将在无限循环中继续,迭代序列如下: 1 , 2 , 3 , , , , ... 等等。虽然它似乎只是接近 因为我的输出结构。

我的算法的这一部分的任务是,通过选择随机坐标并向外扩展,将图像分割成颜色组,检查颜色范围是否超出父颜色,因此需要连续迭代器,直到它什么都没有完成。

使用将是 能够简单地附加到数组中以便将来迭代,而不需要在继续之前完成数组并删除特定元素,作为“活for循环” .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38285
 
631 次点击  
文章 [ 3 ]  |  最新文章 4 年前
kdq0
Reply   •   1 楼
kdq0    4 年前

这是一个 post 讨论不更改正在迭代的容器的原因,即使可以。

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

my_list = [1,2]

while True:
    my_list.append(3)
    if #(check if out of range):
        break
Cireo
Reply   •   2 楼
Cireo    4 年前

您可能需要查看另一个数据结构,比如队列或堆栈。

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

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
Michael
Reply   •   3 楼
Michael    4 年前

我刚用“enumerate”方法来包装列表,下面的代码按您的要求执行:

my_list = [1,2]

for i, element in enumerate(my_list):
   my_list.append(3)