for文の中にあるジェネレータの処理について
pythonの本の中で8クイーンに関するプログラムがあったのですが、for文の中にあるジェネレーターの処理の仕方について分からなかったので教えていただきたいです。#1のジェネレータの値がイテレータとして、yield (pos,) + result を処理することは分かるのですが、その後、#2の値がどのように処理されるのかが分かりません。
該当のソースコード
python
1def conflict(state,nextX): 2 nextY=len(state) 3 for i in range(nextY): 4 if abs(state[i] - nextX) in (0,nextY -i): 5 return True 6 7def queens(num=8, state=()): 8 for pos in range(num): 9 if not conflict(state, pos): 10 if len(state) == num-1: 11 yield (pos,) #1 12 else: 13 for result in queens(num, state + (pos,)): 14 yield (pos,) + result #2
回答1件
あなたの回答
tips
プレビュー