誰かが次のコード行を説明してもらえますか? ある種のネストされた for ループですか? もしそうなら、誰かが同等のネストされた for ループとして書き直すことができます。allPositions パラメータはリストで、synapsesPerSegment は int 変数です。
for rx,ry in random.sample(allPositions, synapsesPerSegment):
通常のループです。ネスティングなし。random.sample
から要素のリストを返し、多くの項目allPositions
を取ります。synapsesPerSegment
for ループで代入される変数は形式のタプルであるため、これは がと各反復に代入される形式のタプルのリスト (またはコレクション) である(rx, ry)
ことを示唆しています。タプルのリストがある場合、for ループは各反復をそれらの変数に「アンパック」します。たとえば、allPositions
(rx, ry)
rx
ry
(a, b) = (99, 100)
次に、この割り当てが展開されます。
(c, d) = (a, b)
そのようc == 99
にd == 100
。
質問に戻るために、いくつかのサンプルデータを使用したウォークスルーを次に示します。
私たちが言うなら:
allPositions = [(1,100), (2, 200), (3, 300), (4, 400)]
そして、例えば:
synapsesPerSegment = 3
から
ランダムで3個取るのでrandom.sample(allPositions, synapsesPerSegment)
生成するかもしれません。[(3, 300), (1,100), (2, 200)]
allPositions
それを繰り返します:
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]