Подтвердить что ты не робот

Преобразование списка кортежей в список списков

Я написал эту функцию, чтобы преобразовать список кортежей в список списков. Есть ли более элегантный /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
4b9b3361

Ответ 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]]

Ответ 2

В то время как понимание списка является полностью верным ответом, поскольку вы просто меняете тип, возможно, стоит рассмотреть альтернативу, встроенный 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.