Методы выравнивания списка в Python: изучение различных подходов

Сгладить список в Python означает преобразовать вложенный список в одномерный список. Вот несколько распространенных способов добиться этого:

  1. Использование цикла и рекурсии:

    • Этот метод включает в себя перебор элементов списка и проверку того, является ли каждый элемент списком. Если это так, функция вызывается рекурсивно, чтобы сгладить этот подсписок. Если нет, элемент добавляется в сводный список.
  2. Использование понимания списка:

    • Понимание списка предлагает краткий способ сглаживания списка путем перебора каждого элемента и проверки, является ли он списком. Если это так, элементы подсписка добавляются к сведенному списку; в противном случае добавляется сам элемент.
  3. Использование функции itertools.chain():

    • Функция itertools.chain()позволяет объединить несколько итераций в одну итерацию. Передав вложенный список в качестве аргумента функции chain(), вы можете сгладить его и получить одномерный список.
  4. Использование функции sum():

    • Функция sum()при использовании с начальным значением пустого списка может использоваться для выравнивания списка. Он объединяет каждый элемент вложенного списка с пустым списком, в результате чего получается плоский список.

Вот пример реализации с использованием вышеуказанных методов:

import itertools
def flatten_list(lst):
    if not isinstance(lst, list):
        return [lst]
    else:
        return [item for sublist in lst for item in flatten_list(sublist)]
def flatten_list_comprehension(lst):
    return [item for sublist in lst for item in (flatten_list_comprehension(sublist) if isinstance(sublist, list) else [sublist])]
def flatten_list_chain(lst):
    return list(itertools.chain(*lst))
def flatten_list_sum(lst):
    return sum(lst, [])
# Example usage
nested_list = [1, [2, [3, 4], 5], 6, [7, 8]]
print(flatten_list(nested_list))
print(flatten_list_comprehension(nested_list))
print(flatten_list_chain(nested_list))
print(flatten_list_sum(nested_list))