Ответ 1
Вы можете использовать понимание списка:
>>> 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]]
Я написал эту функцию, чтобы преобразовать список кортежей в список списков. Есть ли более элегантный /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
Вы можете использовать понимание списка:
>>> 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]]
В то время как понимание списка является полностью верным ответом, поскольку вы просто меняете тип, возможно, стоит рассмотреть альтернативу, встроенный map()
:
>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]
Встроенный map()
просто применяет вызываемый к каждому элементу заданного итерабельного. Это делает его полезным для этой конкретной задачи. В общем, понимание списков является более читабельным и эффективным (чтобы сделать что-либо сложное с map()
вам нужно lambda
), но там, где вы хотите просто изменить тип, map()
может быть очень четким и быстрым.
Обратите внимание, что я использую 2.x здесь, поэтому мы получаем список. В 3.x вы получите итерируемый (который ленив), если вам нужен список в 3.x, просто сделайте list(map(...))
. Если вы в порядке с итерируемым для использования, itertools.imap()
предоставляет ленивый map()
в 2.x.