不明白这个python For循环

时间:2011-09-18 18:58:03

标签: python

我仍然是一个python newb,但我正在使用Pyneurgen neural network tutorial,我不完全理解用于创建输入数据的for循环如何在这个实例中起作用:

for position, target in population_gen(population):
    pos = float(position)
    all_inputs.append([random.random(), pos * factor])
    all_targets.append([target])`

完全循环的循环是什么?我以前没有遇到过使用逗号和循环中的函数。

提前感谢您的任何帮助:)

4 个答案:

答案 0 :(得分:13)

函数population_gen返回一个元组列表,这些元组使用这种语法自动解压缩为变量名。

所以基本上,你从函数中得到类似下面的东西:

[("pos1", "target1"), ("pos2", "target2"), ]

在这个例子中,在for循环的第一次迭代中,变量“position”和“target”将具有值:

position = "pos1"
target = "target1"

在第二次迭代中:

position = "pos2"
target = "target2"

答案 1 :(得分:3)

元组拆包。

for a, b in [(1, 2), (3, 4)]:
  print a
  print b
  print 'next!'

这个功能只是一个功能。

答案 2 :(得分:3)

该函数要么返回一个序列,要么作为一个称为“generator:”的东西,它会在序列中吐出连续的元素,以便调用者遍历。关于yield关键字的This question对这些如何工作有一些深入的讨论。

至于逗号,由于函数(显然)返回一个两元组,以逗号分隔的名称列表是一种方便的方法来命名元组的各个元素而无需自己解压缩。

答案 3 :(得分:2)

它被称为tuple unpackingpopulation_gen(生成器)函数生成包含两个元素的元组。在python中,您可以将多个变量分配给这样的元组

a, b = (1, 2)

因此,在此for循环中,您直接将当前迭代项中的两个元组值放入两个变量positiontarget