Concatener chaine dans list

Résolu/Fermé
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 déc. 2012 à 12:58
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 15 déc. 2012 à 17:34
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 déc. 2012 à 20:56
personne ?
C'est impossible ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 9/12/2012 à 22:58
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
9 déc. 2012 à 23:15
Bonsoir Char Snipeur,
Serait-ce quelque chose du genre :
zip(ch1,ch2) ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 déc. 2012 à 23:07
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
14 déc. 2012 à 12:41
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 mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
14 déc. 2012 à 19:59
ch1=['ed','ert','edc']
ch2=['AQ','B','C']

print map(lambda (x,y): x+y, zip(ch1,ch2))
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
14 déc. 2012 à 22:22
nickel ! J'ai rien compris, mais ça fonctionne.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
14 déc. 2012 à 22:40
Ne fonctionne pas chez moi .. snif
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 14/12/2012 à 23:28
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
15 déc. 2012 à 09:52
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
15 déc. 2012 à 17:34
oui, merci de l'explication.
0