Python: why is zip(*) used instead of unzip()? -
given zen of python why zip(*) used unzip instead of function named unzip()? example transpose/unzip function (inverse of zip)? shows how unzip list.
>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)]) [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] how more:
- beautiful ugly
- explicit implicit
- simple complex
- readable
- etc.
then
>>> unzip([('a', 1), ('b', 2), ('c', 3), ('d', 4)]) ?
what missing here?
you're not unzipping when zip(*your_list). you're still zipping.
zip function can take many arguments want. in case, have 4 different sequences want zip: ('a', 1), ('b', 2), ('c', 3) , ('d', 4). thus, want call zip this:
>>> zip(('a', 1), ('b', 2), ('c', 3), ('d', 4)) [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] but sequences aren't in separate variables, have list contains them all. * operator comes in. operator unpacks list in way each element of list becomes argument function.
this means when this:
your_list = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] zip(*your_list) python calls zip each element of list argument, this:
zip(('a', 1), ('b', 2), ('c', 3), ('d', 4)) this why unzip function isn't necessary: unzipping kind of zip, , achievable zip function , * operator.
Comments
Post a Comment