[英]Don't understand this python For loop
我仍然是一個python newb,但我正在通過Pyneurgen神經網絡教程 ,我不完全理解用於創建輸入數據的for循環如何在這個實例中工作:
for position, target in population_gen(population):
pos = float(position)
all_inputs.append([random.random(), pos * factor])
all_targets.append([target])`
什么是循環迭代? 我以前沒有遇到過使用逗號和循環中的函數。
在此先感謝任何幫助:)
函數population_gen返回一個元組列表,這些元組使用這種語法自動解壓縮為變量名。
所以基本上,你從函數中得到類似下面的東西作為返回值:
[("pos1", "target1"), ("pos2", "target2"), ]
在這個例子中,在for循環的第一次迭代中,變量“position”和“target”將具有以下值:
position = "pos1"
target = "target1"
在第二次迭代中:
position = "pos2"
target = "target2"
元組打開包裝。
for a, b in [(1, 2), (3, 4)]:
print a
print b
print 'next!'
功能只是一個功能。
該函數要么返回一個序列,要么作為一個稱為“generator:”的東西,它會在序列中吐出連續的元素,以便調用者遍歷。 關於yield關鍵字的這個問題對這些如何工作有一些深入的討論。
至於逗號,由於函數(顯然)返回一個兩元組,以逗號分隔的名稱列表是一種方便的方法來命名元組的各個元素而無需自己解壓縮它們。
它被稱為元組解包 。 population_gen
(generator)函數產生的元組恰好包含兩個元素。 在python中,您可以將多個變量分配給這樣的元組
a, b = (1, 2)
所以在這個for
循環中,你直接將當前迭代項中的兩個元組值放入你的兩個變量position
和target
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.