Сгладить список в Python означает преобразовать вложенный список в одномерный список. Вот несколько распространенных способов добиться этого:
-
Использование цикла и рекурсии:
- Этот метод включает в себя перебор элементов списка и проверку того, является ли каждый элемент списком. Если это так, функция вызывается рекурсивно, чтобы сгладить этот подсписок. Если нет, элемент добавляется в сводный список.
-
Использование понимания списка:
- Понимание списка предлагает краткий способ сглаживания списка путем перебора каждого элемента и проверки, является ли он списком. Если это так, элементы подсписка добавляются к сведенному списку; в противном случае добавляется сам элемент.
-
Использование функции
itertools.chain():- Функция
itertools.chain()позволяет объединить несколько итераций в одну итерацию. Передав вложенный список в качестве аргумента функцииchain(), вы можете сгладить его и получить одномерный список.
- Функция
-
Использование функции
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))