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

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

最佳答案

这是一个正常的循环。没有嵌套。 random.sample返回allPositions中的元素列表,其中包含synapsesPerSegment个项目。由于在for循环中分配给变量的是形式为(rx, ry)的元组,这表明allPositions是形式为(rx, ry)的元组列表(或集合),这些元组被分配给rxry每次迭代。如果有元组列表,则for循环将每次迭代将其“解包”到这些变量。例如,如果您有

(a, b) = (99, 100)

然后此分配将解压缩:

(c, d) = (a, b)

这样c == 99d == 100

回到这个问题,下面是一些示例数据的演练:

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

并且,例如:
synapsesPerSegment = 3

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

然后遍历:


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

关于python - 函数似乎返回多个结果,或者:什么是隐式元组拆包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11874334/

10-12 20:29