不理解这个Python For循环

22 投票
4 回答
17760 浏览
提问于 2025-04-17 02:32

我正在学习一个教程,里面有这段代码:

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 循环中,你直接把当前循环项的两个元组值放进了两个变量 positiontarget 中。

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"

撰写回答