J'essaie de diviser les éléments d'une liste que j'ai, basée sur un séparateur d'espace et de remplacer la chaîne que je divise par la chaîne nouvellement divisée.
Jusqu'à présent, j'ai essayé ceci, j'ai utilisé la fonction split pour diviser la chaîne, mais je ne peux pas ajouter les éléments (ou la chaîne) séparés à ma liste d'origine.
J'ai essayé d'utiliser join sur les éléments de la liste, mais cela m'a donné une erreur de syntaxe.
Voici ce que j'ai essayé jusqu'à présent:
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2, 'label_test3', 'my_label2', 'new_label2', 'my_label']
5 Réponses :
Qu'en est-il des:
import itertools my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label'] new_list = itertools.chain(*[l.split() for l in my_list]) print(list(new_list)) # >> ['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
chaînes , à partir de itertools bibliothèque intégrée, vous permet d'enchaîner plus de 2 itérables en un seul.
Utilisation de str.split avec chain.from_iterable
Sortie: ['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
from itertools import chain
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
print(list(chain.from_iterable(i.split() for i in my_list)))
Essayez ceci,
>>> [j for i in my_list for j in i.split()] ['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
Sortie:
>>> my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
cela fonctionne dans l'invite de commande pour moi, mais pas dans mon script python.
la sortie est la même liste passée
@PDoe Avez-vous copié et collé le code? Au lieu de j si vous utilisez i , alors seulement vous obtiendrez la même liste.
extend () - est utilisé pour fusionner deux listes ou insérer plusieurs éléments dans une liste.
['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
O / P:
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list=[]
for elm in my_list:
new_list.extend(elm.split(" "))
print(new_list)
Cette pièce peut donner le résultat mais c'est la meilleure façon de le faire?
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list = []
for item in my_list:
new_list.extend(item.split())
my_list.clear()
my_list.extend(new_list)
print(my_list)
Vous ne devez jamais muter ou modifier une liste en la parcourant en boucle. Créez toujours une nouvelle liste et laissez l'ancienne liste telle quelle.