有人可以解释一下下面这行代码吗?它是某种嵌套的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
