Python 函数似乎返回多个结果,或者:隐式元组解包是什么
有人能解释一下下面这行代码吗?它是某种嵌套for循环吗?如果是这样,有人可以将其重写为等效的嵌套for循环。allPositions参数是一个列表,synapsesPerSegment是一个int变量Python 函数似乎返回多个结果,或者:隐式元组解包是什么,python,for-loop,Python,For Loop,有人能解释一下下面这行代码吗?它是某种嵌套for循环吗?如果是这样,有人可以将其重写为等效的嵌套for循环。allPositions参数是一个列表,synapsesPerSegment是一个int变量 for rx,ry in random.sample(allPositions, synapsesPerSegment): 这是一个正常的循环。没有筑巢random.sample返回allPositions中的元素列表,获取synapsepersegment许多项。由于for循环中分配给的变量是
for rx,ry in random.sample(allPositions, synapsesPerSegment):
这是一个正常的循环。没有筑巢
random.sample
返回allPositions
中的元素列表,获取synapsepersegment
许多项。由于for循环中分配给的变量是(rx,ry)
形式的元组,这表明allPositions
是(rx,ry)
形式的元组列表(或集合),每个迭代都分配给rx
和ry
。如果您有一个元组列表,for循环会在每次迭代中将它们“解包”到这些变量。例如,如果你有
(a,b)=(99100)
然后此分配将解包:
(c,d)=(a,b)
所以c==99
和d==100
为了回到问题,下面是一些示例数据的演练:
如果我们说:
allPositions=[(1100),(2200),(3300),(4400)]
例如:
synapsepersegment=3
然后
random。样本(所有位置,突触分段)
可能产生[(3300),(1100),(2200)]
,因为它随机从所有位置
获取3项
然后迭代:
- 迭代1:
,rx=4
ry=400
- 迭代2:
,rx=1
ry=100
- 迭代3:
,rx=2
ry=200
- 这是一个正常的循环。没有筑巢
random.sample
返回allPositions
中的元素列表,获取synapsepersegment
许多项。由于for循环中分配给的变量是(rx,ry)
形式的元组,这表明allPositions
是(rx,ry)
形式的元组列表(或集合),每个迭代都分配给rx
和ry
。如果您有一个元组列表,for循环会在每次迭代中将它们“解包”到这些变量。例如,如果你有
(a,b)=(99100)
然后此分配将解包:
(c,d)=(a,b)
所以c==99
和d==100
为了回到问题,下面是一些示例数据的演练:
如果我们说:
allPositions=[(1100),(2200),(3300),(4400)]
例如:
synapsepersegment=3
然后
random。样本(所有位置,突触分段)
可能产生[(3300),(1100),(2200)]
,因为它随机从所有位置
获取3项
然后迭代:
- 迭代1:
,rx=4
ry=400
- 迭代2:
,rx=1
ry=100
- 迭代3:
,rx=2
ry=200
for item in random.sample(allPositions, synapsesPerSegment):
rx = item[0]
ry = item[1]
它不是嵌套循环,它被称为元组解包。这可能有助于你将其大致等同于这样做
for item in random.sample(allPositions, synapsesPerSegment):
rx = item[0]
ry = item[1]
请注意,
allPositions
是一个2元组列表的事实对于以前没有见过解包语法的人来说可能并不“明显”。分配rx
和ry
的方式就是一个例子。请注意,allPositions
是一个2元组列表的事实对于没有见过解包语法的人来说可能并不“明显”前面的解包语法。rx
和ry
的分配方式就是一个示例。