J'essayais d'obtenir un ensemble de tous les caractères d'une liste de chaînes en utilisant une compréhension à deux niveaux:

words = ['foo','bar']
s = {c for c in w for w in l}

Mais j'ai l'erreur suivante:

NameError: name 'w' is not defined

Je me demande si c'est parce que w n'est pas un objet liste. Dans l'affirmative, existe-t-il un autre moyen d'obtenir rapidement un jeu de caractères à partir d'une liste de chaînes?

2
user2517984 16 mars 2019 à 20:33

2 réponses

Meilleure réponse

Une compréhension en python est évalué de gauche à droite. Cela signifie que votre boucle externe doit venir en premier. Par conséquent, vous devez échanger les boucles :

 words = ['foo','bar']
 s = {c for w in words for c in w}

Production:

 {'a', 'b', 'r', 'f', 'o'}
5
kalehmann 16 mars 2019 à 17:54

Essaye ça :

words = ['foo','bar']
s = [[c1 for c1 in word] for word in words]
print(s)

Production :

[['f', 'o', 'o'], ['b', 'a', 'r']]
-1
J.K 16 mars 2019 à 18:01