将元组列表转换为列表列表

时间:2013-02-12 11:47:03

标签: python

我已经编写了这个函数来将元组列表转换为列表列表。有更优雅/ Pythonic的方式吗?

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

2 个答案:

答案 0 :(得分:41)

您可以使用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]]

答案 1 :(得分:19)

虽然列表理解是一个完全有效的答案,但由于您只是在改变类型,因此可能值得考虑替代方案,the map() built-in

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

map()内置函数只是将一个callable应用于给定iterable的每个元素。这使得它对这项特殊任务有益。一般来说,列表推导更具可读性和效率(对于需要map() lambda的任何复杂事情),但是如果您只想更改类型,map()可以非常明确,快。

请注意,我在这里使用2.x,所以我们得到一个列表。在3.x中你会得到一个可迭代的(这是懒惰的),如果你想要一个3.x的列表,只需做list(map(...))。如果你对使用的迭代很好,itertools.imap()在2.x中提供了一个懒惰的map()