[英]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.