1. ホーム
  2. python

[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?

2022-05-13 22:38:10

質問

s = [1,2,3,4,5,6,7,8,9]
n = 3

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

どのように zip(*[iter(s)]*n) はどのように動作するのでしょうか? もっと冗長なコードで書かれるとどうなるのでしょうか?

どのように解決するのですか?

iter() はシーケンスに対するイテレータです。 [x] * n を含むリストを生成します。 n の量 x のリスト、すなわち長さ n であり、各要素は x . *arg は、シーケンスを関数呼び出しのための引数に展開します。したがって、あなたは同じイテレータを3回 zip() に3回渡していることになり、毎回イテレータから項目を取り出しています。

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