Глубоковременно преобразовать список в плоский

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Python список может содержать другие списки в качестве элементов, а эти списки могут содержать еще больше списков в качестве элементов, образуя вложенную структуру. Процесс преобразования вложенного списка в плоский список означает преобразование его в одномерный список, где все элементы находятся на одном уровне. В этом испытании вам будет предложено написать функцию, которая глубоковременно преобразует список в плоский, то есть она будет преобразовывать все вложенные списки рекурсивно.

Глубоковременно преобразовать список в плоский

Напишите функцию deep_flatten(lst), которая принимает список lst в качестве аргумента и возвращает новый список, который представляет собой глубоко преобразованную в плоский версию lst. Функция должна использовать рекурсию и функцию isinstance() с collections.abc.Iterable, чтобы проверить, является ли элемент итерируемым. Если элемент итерируемый, функция должна рекурсивно применить deep_flatten() к этому элементу. В противном случае функция должна вернуть список, содержащий только этот элемент.

from collections.abc import Iterable

def deep_flatten(lst):
  return ([a for i in lst for a in
          deep_flatten(i)] if isinstance(lst, Iterable) else [lst])
deep_flatten([1, [2], [[3], 4], 5]) ## [1, 2, 3, 4, 5]

Резюме

В этом испытании вы узнали, как глубоко преобразовать список в плоский с использованием рекурсии и функции isinstance() с collections.abc.Iterable. Эта техника может быть полезной при работе с вложенными структурами данных, такими как списки списков.