If I have
nums_and_words = [(1, 'one'), (2, 'two'), (3, 'three')]
and would like
nums = [1, 2, 3]
words= ['one', 'two', 'three']
How would I do that in a Pythonic way? It took me a minute to realize why the following doesn't work
nums, words = [(el[0], el[1]) for el in nums_and_words]
I'm curious if someone can provide a similar manner of achieving the result I'm looking for.
Use
zip
, then unpack:Actually, this "unpacks" twice: First, when you pass the list of lists to
zip
with*
, then when you distribute the result to the two variables.You can think of
zip(*list_of_lists)
as 'transposing' the argument:Note that this will give you tuples; if you really need lists, you'd have to
map
the result:Using List comprehension ..
Testing if this worksJust unzip and create lists:
See the
zip
documentation.