不理解这个Python For循环
我正在学习一个教程,里面有这段代码:
for position, target in population_gen(population):
pos = float(position)
all_inputs.append([random.random(), pos * factor])
all_targets.append([target])
我不太明白这个for
循环是怎么工作的。特别是:这个循环到底在遍历什么呢?我只知道像for i in mylist:
这样的简单例子。为什么在in
的右边会有一个函数调用,而在左边又有两个用逗号分开的东西呢?
4 个回答
3
这叫做 元组解包。population_gen
这个函数会生成包含两个元素的元组。在 Python 中,你可以像这样把多个变量同时赋值给元组。
a, b = (1, 2)
所以在这个 for
循环中,你直接把当前循环项的两个元组值放进了两个变量 position
和 target
中。
7
元组解包。
for a, b in [(1, 2), (3, 4)]:
print a
print b
print 'next!'
而这个函数就是一个普通的函数。
22
这个函数 population_gen 返回的是一个包含元组的列表,这些元组会自动被拆分成变量名,使用的就是这种语法。
简单来说,你从这个函数得到的返回值大概是这样的:
[("pos1", "target1"), ("pos2", "target2"), ]
在这个例子中,在 for 循环的第一次迭代中,变量 "position" 和 "target" 的值会是:
position = "pos1"
target = "target1"
在第二次迭代中:
position = "pos2"
target = "target2"