2024-09-29 19:35:40 发布
网友
有人能解释一下下面的代码吗?它是某种嵌套for循环吗?如果是这样,有人可以重写它作为一个等价的嵌套for循环。allPositions参数是一个列表,synapsepersegment是一个int变量。你知道吗
for rx,ry in random.sample(allPositions, synapsesPerSegment):
这是一个正常的循环。没有筑巢。random.sample返回来自allPositions的元素列表,包含synapsesPerSegment许多项。由于for循环中分配给的变量是(rx, ry)形式的元组,这表明allPositions是(rx, ry)形式的元组列表(或集合),每个迭代都分配给rx和ry。如果您有一个元组列表,for循环会在每次迭代中将它们“解压”到这些变量中。例如,如果你有
random.sample
allPositions
synapsesPerSegment
(rx, ry)
rx
ry
(a, b) = (99, 100)
然后,此分配将打开:
(c, d) = (a, b)
所以c == 99和d == 100。你知道吗
c == 99
d == 100
为了回到问题上来,下面是一个包含一些示例数据的演练:
如果我们说: allPositions = [(1,100), (2, 200), (3, 300), (4, 400)]
allPositions = [(1,100), (2, 200), (3, 300), (4, 400)]
例如: synapsesPerSegment = 3
synapsesPerSegment = 3
那么 random.sample(allPositions, synapsesPerSegment)可能会产生[(3, 300), (1,100), (2, 200)],因为它随机从allPositions中获取3项。你知道吗
random.sample(allPositions, synapsesPerSegment)
[(3, 300), (1,100), (2, 200)]
然后迭代:
rx = 4
ry = 400
rx = 1
ry = 100
rx = 2
ry = 200
它不是嵌套循环,它被称为元组解包。它可能会帮助你认为它大致等同于这样做
for item in random.sample(allPositions, synapsesPerSegment): rx = item[0] ry = item[1]
这是一个正常的循环。没有筑巢。
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 = 400
rx = 1
,ry = 100
rx = 2
,ry = 200
它不是嵌套循环,它被称为元组解包。它可能会帮助你认为它大致等同于这样做
相关问题 更多 >
编程相关推荐