← retour aux snippets

itertools.chain: concaténer des iterables efficacement

Aplatir un niveau de listes/iterables sans créer de copies inutiles.

python itertools #itertools#chain#flatten

objectif

Aplatir un niveau de listes/iterables sans créer de copies inutiles.

code minimal

import itertools
out = list(itertools.chain([1,2], [3], [], [4,5]))
print(out == [1,2,3,4,5])  # attendu: True

utilisation

import itertools
nested = [[1,2],[3,4]]
flat = list(itertools.chain.from_iterable(nested))
print(flat == [1,2,3,4])

variante(s) utile(s)

import itertools
print(tuple(itertools.chain("ab","cd")) == ("a","b","c","d"))

notes

  • chain est paresseux; préférez-le à des + ou sum(listes, []) coûteux.
  • Pour des niveaux plus profonds, voyez itertools.recipes ou un générateur.