Why does zip(*[iter(s)]*n) chunk s into n chunks in Python?

This makes possible an idiom for clustering a data series into n-length groups using zip(*[iter(s)]*n).

python.org zip docs

During this year's Advent of Code, I've been learning python, and that snippet above blew my tiny little python mind. Let's take a look at everything that's going on here!

chunk = lambda s, n: zip(*[iter(s)] * n)
chunk(range(0, 9), 3) # returns iterator((0, 1, 2), (3, 4, 5), (6, 7, 8))

I think this is a coding idiom I'm going to stay away from for now. I'm not yet fluent enough with python to be confident reading or writing a line like zip(*[iter(range(0, 100))] * 10), but I'm glad I can at least puzzle through it!