我已经编写了这个函数来将元组列表转换为列表列表。有更优雅/ 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
答案 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()
。