Why should it be a function? It can be a method on sequence like objects (trait)...
Python itself has tons of those...
Python does have some that annoy me a bit. I think str.join would be clearer as a function, but at least that does have a positional parameter.
How is that a counter-argument? It makes sense then that the method belongs to that type (iteratables).
https://docs.rs/itertools/0.7.8/itertools/fn.zip.html
By the way, the Iterator's zip function is no magic. You could trivially implement a standalone function using the zip method yourself:
https://docs.rs/itertools/0.7.8/src/itertools/free.rs.html#7...
for (a, b) in Iterator::zip(as, bs) { // ... }