有人可以解释以下代码行吗?它是某种嵌套的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)]
,因为它随机抽取了allPositions
中的3个项目。
然后遍历:
迭代1:rx = 4
,ry = 400
迭代2:rx = 1
,ry = 100
迭代3:rx = 2
,ry = 200
关于python - 函数似乎返回多个结果,或者:什么是隐式元组拆包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11874334/