[英] How can zip be used to chunk data into equal sized groups?
>>> n = 3 >>> x = range(n ** 2), >>> xn = list(zip(*[iter(x)] * n))
In PEP 618, the author gives this example of how
zip can be used to chunk data into equal sized groups.
How does it work?
I think that it relies on an implementation detail of
zip such that if it takes the first element of each of the elements of the list
[iter(x)] * n that equates to the first
n elements because of the changing state of
iter(x) as each of the elements are taken.
This is because the following code replicates the above behavior:
n = 3 x = range(n ** 2) xn = [iter(x)] * n res =  while True: try: col =  for element in xn: col.append(next(element)) res.append(col) except: break
However, I would like to make sure that this is indeed the case and that this is a reliable behavior that can be used to chunk elements of an iterable.