Zum Verständnis sollte die Iteration verschachtelter Listen in derselben Reihenfolge erfolgen wie das für Schleifen imäplierte Äquivalent.
Zum Verständnis nehmen wir ein einfaches Beispiel aus NLP. Sie möchten eine Liste aller Wörter aus einer Liste von Sätzen erstellen, wobei jeder Satz eine Liste von Wörtern ist.
>>> 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', '.']
Um die wiederholten Wörter zu entfernen, können Sie eine Menge {} anstelle einer Liste [] verwenden.
>>> 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']
oder bewerben list(set(all_words))
>>> all_unique_words = list(set(all_words))
['.', 'dog', 'the', 'chases', 'barks', 'mouse', 'The', 'cat']
itertools.chain
Sie, wenn Sie eine abgeflachte Liste wünschen:list(chain.from_iterable(entry for tag in tags for entry in entries if tag in entry))