En compréhension, l'itération des listes imbriquées doit suivre le même ordre que l'équivalent imbriqué pour les boucles.
Pour comprendre, nous prendrons un exemple simple de la PNL. Vous souhaitez créer une liste de tous les mots à partir d'une liste de phrases où chaque phrase est une liste de mots.
>>> list_of_sentences = [['The','cat','chases', 'the', 'mouse','.'],['The','dog','barks','.']]
>>> all_words = [word for sentence in list_of_sentences for word in sentence]
>>> all_words
['The', 'cat', 'chases', 'the', 'mouse', '.', 'The', 'dog', 'barks', '.']
Pour supprimer les mots répétés, vous pouvez utiliser un ensemble {} au lieu d'une liste []
>>> all_unique_words = list({word for sentence in list_of_sentences for word in sentence}]
>>> all_unique_words
['.', 'dog', 'the', 'chase', 'barks', 'mouse', 'The', 'cat']
ou postuler list(set(all_words))
>>> all_unique_words = list(set(all_words))
['.', 'dog', 'the', 'chases', 'barks', 'mouse', 'The', 'cat']
itertools.chain
si vous voulez une liste aplatie:list(chain.from_iterable(entry for tag in tags for entry in entries if tag in entry))