I was once working with some data in Python that would generate a list of tuples, for example:
myList = [('ab',1), ('cd', 2), ('ef', 3)]
I wanted to obtain two lists from this: the first list containing the first element of each tuple and the second list containing the second element of each tuple. The zip
function goes part of the way there:
>>> a, b = zip(*y)
>>> a
('ab', 'cd', 'ef')
>>> b
(1, 2, 3)
Effectively, zip
would produce two tuples. Individually converting these to a list
(e.g. list(a)
and list(b)
) would work, but would not be feasible if the tuples had many more entries. This is where the map
function comes in:
>>> a, b = map(list, zip(*y))
>>> a
['ab', 'cd', 'ef']
>>> b
[1, 2, 3]
At this point, I also found out that Python’s syntax also supports pointers directly to list, such that:
a, b = map(list, zip(*[('ab',1), ('cd', 2), ('ef', 3)]))
works! I forget that Python syntax can differ from C!