Skip to main content
 首页 » 编程设计

python之函数似乎返回多个结果或 : what is implicit tuple unpacking

2025年05月04日12freeliver54

有人可以解释一下下面这行代码吗?它是某种嵌套的for循环吗?如果是这样,有人可以将其重写为等效的嵌套 for 循环。 allPositions 参数是一个列表,synapsesPerSegment 是一个 int 变量。

for rx,ry in random.sample(allPositions, synapsesPerSegment): 

请您参考如下方法:

这是一个正常的循环。没有嵌套。 random.sample 返回 allPositions 中的元素列表,采用 synapsesPerSegment 许多项。由于在 for 循环中分配给的变量是 (rx, ry) 形式的元组,这表明 allPositions 是元组的列表(或集合) (rx, ry) 形式,每次迭代都分配给 rx 和 ry。如果您有一个元组列表,则 for 循环会在每次迭代时将它们“解包”到这些变量中。例如,如果你有

(a, b) = (99, 100)

然后这个分配将解包:

(c, d) = (a, b)

因此 c == 99 和 d == 100。

回到问题,这里有一些示例数据:

如果我们说: allPositions = [(1,100), (2, 200), (3, 300), (4, 400)]

例如: synapsesPerSegment = 3

然后 random.sample(allPositions, synapsesPerSegment) 可能会生成 [(3, 300), (1,100), (2, 200)] 因为它从 中提取了 3 个项目allPositions 随机。

然后迭代:

  • 迭代 1:rx = 4,ry = 400
  • 迭代 2:rx = 1,ry = 100
  • 迭代 3:rx = 2,ry = 200