Aplatir profondément une liste

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En Python, une liste peut contenir d'autres listes en tant qu'éléments, et ces listes peuvent à leur tour contenir encore plus de listes en tant qu'éléments, formant une structure imbriquée. Le processus de platir une liste imbriquée consiste à la convertir en une liste à une dimension, où tous les éléments sont au même niveau. Dans ce défi, vous devrez écrire une fonction qui aplatira profondément une liste, ce qui signifie qu'elle aplatira toutes les listes imbriquées de manière récursive.

Aplatir profondément une liste

Écrivez une fonction deep_flatten(lst) qui prend une liste lst en argument et renvoie une nouvelle liste qui est la version aplatie profondément de lst. La fonction devrait utiliser la récursion et la fonction isinstance() avec collections.abc.Iterable pour vérifier si un élément est itérable. Si un élément est itérable, la fonction devrait appliquer deep_flatten() de manière récursive à cet élément. Sinon, la fonction devrait renvoyer une liste ne contenant que cet élément.

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]

Sommaire

Dans ce défi, vous avez appris à aplatir profondément une liste en utilisant la récursion et la fonction isinstance() avec collections.abc.Iterable. Cette technique peut être utile lorsqu'il s'agit de traiter des structures de données imbriquées, telles que des listes de listes.