Concatener chaine dans list

Résolu
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai deux listes de chaine de caractère de même taille, et je voudrais les concaténer ensemble en une seul instruction. Est-ce possible, et si oui, comment ?
Note : j'utilise pylab

exemple, j'ai :
ch1=['ed','ert','edc']
ch2=['A','B','C']
et je voudrai obtenir :
['edA','ertB','edcC']
sans passer par une boucle for (sinon, c'est facile)


A voir également:

5 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
personne ?
C'est impossible ?
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
je cherche ...
edit:
j'ai vu le post seulement ce soir .. et n'étant pas programmeur Python, je n'arrive pas à trouver, mais je cherche encore
Alors patience avant de montrer le résultat. Merci
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Bonsoir Char Snipeur,
Serait-ce quelque chose du genre :
zip(ch1,ch2) ?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Chez moi ça donne :
>>> ch1=['ed','ert','edc']
>>> ch2=['AQ','B','C']
>>> zip(ch1,ch2)
[('ed', 'AQ'), ('ert', 'B'), ('edc', 'C')]
c'est pas trop mal, mais pas exactement ce que je cherche.
En tout cas, merci de ta réponse, ça me laisse un peu d'espoir.
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Bonjour Char Snipeur,

Peut-être ok ?
L =[ch1+ch2 for ch1,ch2 in zip(ch1,ch2)]
for elt in enumerate(L):
    print(elt)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
ch1=['ed','ert','edc']
ch2=['AQ','B','C']

print map(lambda (x,y): x+y, zip(ch1,ch2))
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
nickel ! J'ai rien compris, mais ça fonctionne.
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Ne fonctionne pas chez moi .. snif
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Ce n'est pas compliqué.
map() est une fonction qui applique son premier argument sur tous les élements de son second argument.
Pour que ça marche, il faut évidemment que le premier argument soit une fonction.
Quant au second argument, ce peut être une séquence (liste, tuple....) ou un générateur.

Dans l'expression, la fonction c'est
lambda (x,y): x+y
Ce n'est pas une fonction définie comme les autres dans le genre:
def jadditionne(x,y):   
    return x+y
mais ce qu'on appelle une lambda fonction.
Le lambda n'est pas le nom de la fonction, c'est le mot-clé qui permet de définir ce genre de fonction. C'est l'équivalent de def , il signale la définition d'une fonction.

La particularité d'une lambda-fonction est d'être définie "à la volée" ("on the fly"), c'est à dire que l'objet fonction créé n'est assigné à aucun identifiant, elle n'a pas de nom tel que l'identifiant jadditionne qui est le nom de la fonction de l'autre type que j'ai définie plus haut.

Les paramètres de la lambda-fonction sont définis entre le mot-clé lambda et le deux-point : ici c'est un tuple (x,y)
L'objet retourné par la lambda-fonction est indiqué après le deux-points :

Le code suivant produit le même résultat que celui avec la lambda-fonction:

ch1=['ed','ert','edc']    
ch2=['AQ','B','C']   

def jadditionne((x,y)):   
    return x+y   

print map(jadditionne, zip(ch1,ch2))


En fait, l'objet de nom jadditionne et l'objet défini par la lambda-formule sont identiques. Mais dans le deuxième cas, il n'y a pas de nom assigné à l'objet.
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Bonjour heyquem,

Et surtout merci pour vos explications pointilleuses. Elles me permettent de mieux comprendre. Grâce à elles je sait maintenant comment construire une fonction ou une lambda fonction.

Le seul hic est que le mot clef "map()" fâche mon compilateur (version 3.3) à tel point que la 'message box' me signale un erreur de syntaxe qui est une erreur critique évidemment.

Si non, encore milles merci pour toutes ces précisions.
Heliotte.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
oui, merci de l'explication.
0