Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数似乎返回多个结果,或者:隐式元组解包是什么_Python_For Loop - Fatal编程技术网

Python 函数似乎返回多个结果,或者:隐式元组解包是什么

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循环吗?如果是这样,有人可以将其重写为等效的嵌套for循环。allPositions参数是一个列表,synapsesPerSegment是一个int变量

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
      的分配方式就是一个示例。