Pythonでzip(*[iter(s)]*n)はどのように機能しますか? 質問する

Pythonでzip(*[iter(s)]*n)はどのように機能しますか? 質問する
s = [1,2,3,4,5,6,7,8,9]
n = 3

list(zip(*[iter(s)]*n)) # returns [(1,2,3),(4,5,6),(7,8,9)]

どのようにzip(*[iter(s)]*n)動作しますか? より詳細なコードで記述した場合はどのようになりますか?


これは、リストを同じサイズのチャンクに分割する- 問題の概要については、その質問を参照してください。

ベストアンサー1

iter()はシーケンスの反復子です。の量[x] * nを含むリスト、つまり各要素が である長さのリストを生成します。はシーケンスを関数呼び出しの引数に展開します。したがって、同じ反復子を 3 回渡しています。nxnx*argzip()、そして毎回イテレータから項目を取得します。

x = iter([1,2,3,4,5,6,7,8,9])
print(list(zip(x, x, x)))

おすすめ記事