Unpacking a list / tuple of pairs into two lists / tuples
list, python, split, tuples
Solution
>>> source_list = [('1','a'),('2','b'),('3','c'),('4','d')]
>>> list1, list2 = zip(*source_list)
>>> list1
('1', '2', '3', '4')
>>> list2
('a', 'b', 'c', 'd')
Edit: Note that `zip(*iterable)` is its own inverse:
>>> list(source_list) == zip(*zip(*source_list))
True
When unpacking into two lists, this becomes:
>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True
Addition suggested by rocksportrocker.
Problem
I have a list that looks like this: ``` my_list = [('1','a'),('2','b'),('3','c'),('4','d')] ``` I want to separate the list in 2 lists. ``` list1 = ['1','2','3','4'] list2 = ['a','b','c','d'] ``` I can do it for example with: ``` list1 = [] list2 = [] for i in list: list1.append(i[0]) list2.append(i[1]) ``` But I want to know if there is a more elegant solution.