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)工作如何?如果用更冗长的代码编写,它将是什么样?
zip(*[iter(s)]*n)
iter()是序列上的迭代器。[x] * n产生一个包含n数量的列表x,即一个长度的列表n,其中每个元素都是x。*arg将序列解压缩为函数调用的参数。因此,你要将3次相同的迭代器传递给zip(),并且每次都会从迭代器中提取一个项目。
iter()
[x] * n
x
*arg
x = iter([1,2,3,4,5,6,7,8,9]) print zip(x, x, x)