質問: (sum(row) for row in m) # create a generator of row sums next(g) # run the iteration protocol 私は絶対的な初心者であり、著者は例やnext()関数の説明を提供していないため、コードが何をしているのか理解できません。
回答: 式_(sum(row) for row in m)_は、generatorと呼ばれるものを作成します。このジェネレーターは、mの行ごとに式(sum(row))を1回評価します。ただし、ジェネレーターはまだ何もしていません。セットアップしただけです。ステートメントnext(g)は実際にはruns mのジェネレーターです。したがって、next(g)を1回実行すると、最初の行の合計が得られます。もう一度実行すると、2番目の行の合計が取得されます。_>>> m = [[1,2,3], ... [4,5,6], ... [7,8,9]] >>> >>> g = (sum(row) for row in m) # create a generator of row sums >>> next(g) # run the iteration protocol 6 >>> next(g) 15 >>> next(g) 24 _こちらもご覧ください: ジェネレーターに関するドキュメント yield式に関するドキュメント (ジェネレーターに関する情報を含む)