Convert a list of tuples to a list of lists

Question:

I’ve written this function to convert a list of tuples to a list of lists. Is there a more elegant / Pythonic way of doing this?

def get_list_of_lists(list_of_tuples):
    list_of_lists = []                                                          
    for tuple in list_of_tuples:
        list_of_lists.append(list(tuple))

    return list_of_lists
Asked By: woollybrain

||

Answers:

You can use list comprehension:

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> list_of_lists = [list(elem) for elem in list_of_tuples]

>>> list_of_lists
[[1, 2], [4, 5]]
Answered By: Rohit Jain

While the list comprehension is a totally valid answer, as you are just changing type, it might be worth considering the alternative, the map() built-in:

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]

The map() built-in simply applies a callable to each element of the given iterable. This makes it good for this particular task. In general, list comprehensions are more readable and efficient (as to do anything complex with map() you need lambda), but where you want to simply change type, map() can be very clear and quick.

Note that I’m using 2.x here, so we get a list. In 3.x you will get an iterable (which is lazy), if you want a list in 3.x, simply do list(map(...)). If you are fine with an iterable for your uses, itertools.imap() provides a lazy map() in 2.x.

Answered By: Gareth Latty
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.