The zip needs a lot of contentions to zip together, however what you have is a single argument (a list, whose components are likewise records). The * in a function call "unloads" a list (or other iterable), making every one of its components a different contention. So without *, you're doing zip( [[1,2,3],[4,5,6]] ) and with *, you're doing zip([1,2,3], [4,5,6]).
Want to learn python to get expertise in the concepts of python? Join python certification course and get certified