有人可以解释下面的代码行吗?它是某种嵌套for循环吗?如果是这样,有人可以将其重写为等效的嵌套for循环.allPositions参数是一个列表,synapsesPerSegment是一个int变量.
for rx,ry in random.sample(allPositions, synapsesPerSegment):
Run Code Online (Sandbox Code Playgroud)
这是一个正常的循环.没有筑巢.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)]因为它allPositions随机需要3个项目.
然后迭代:
rx = 4,ry = 400rx = 1,ry = 100rx = 2,ry = 200