[英]Looping an Python list while appending and iterating over fresh/new values
我目前正在構建圖像像素迭代器,並在2D網格上選擇一個點並向外迭代( 上,下,左,右等)。 在開發過程中,我編寫了一個如下的for循環,以了解其功能:
expanding = [1, 2]
# Expected functionality: continues to iterate "3" forever.
for expand in expanding:
expanding.append(3)
我希望它可以繼續在一個無限循環,與迭代序列看起來像: 1
, 2
, 3
, 3
, 3
, 3
, ...
等等。 盡管由於我的輸出結構似乎只關閉了2
。
我算法的這一部分的任務是通過選擇隨機坐標並向外擴展將圖像分為顏色組,檢查顏色范圍是否與父顏色相差太遠,因此需要一個連續的迭代器,直到它最終確定為零為止。
該用法將能夠簡單地追加到數組中,以便將來進行迭代,而無需完成數組並在繼續操作之前刪除特定元素,就稱為“實時循環” 。
我只是使用“枚舉”方法包裝列表來親自嘗試過,下面的代碼可以滿足您的要求:
my_list = [1,2]
for i, element in enumerate(my_list):
my_list.append(3)
這是一則帖子,討論了即使可以也不要更改正在迭代的容器的原因。
如何使用while循環並在完成后中斷:
my_list = [1,2]
while True:
my_list.append(3)
if #(check if out of range):
break
您可能想要查看其他數據結構,例如隊列或堆棧。
作為一個非常非常差的示例,有些圖算法與以下邏輯相距不遠:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.