IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

prendre des éléments de façon alternative dans listes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut prendre des éléments de façon alternative dans listes
    Hello everybody

    J'ai de nouveau besoin de vos connaissances . Je vous explique : à partir de deux chaines j essaie de créer une nouvelle liste contenant les éléments pris alternativement dans c1 et dans c2.
    Je bloque mon code n'est pas bon.... je n'ai pas de soucis à part que le résultat attendu n'est pas celui que je constate....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    def aplatir(c1,c2):
     
    	print ([(x, y) for x in c1 for y in c2])
     
     
     
    k=[1,2,3]
    t=[99,6666,4444]
     
     
    aplatir(k,t)

    Merci encore


    Vaness

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Essayez de relire (et comprendre) ce que vous avez écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def aplatir(c1,c2):
    	new=[]
    	[(x, y) for x in c1 for y in c2]
    	new.append(x,y)
    C'est sûr qu'il faut créer une nouvelle liste "new" et la construire en y ajoutant un élément de c1 et un élément de c2. Donc en supposant que les longueurs soient identique, une boucle "for" élémentaire peut se faire à partir des indices:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in len(range(c1)):
           a = element de c1 de rang i
           b = element de c2 de rang i
           on les ajoute à new
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci wiztricks pour ta réponse. J'avoue que je vois pas comment faire autrement que ce que j'ai fait ....

    Vaness

  4. #4
    Membre confirmé
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    j'ai trouvé voici mon code mais j'aurais aimé avoir un code plus pythonique et moins bidouillage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    def aplatir(c1,c2):
    	new=[]
    	ii=0
     
    	for x in c1:
    		ii=ii+1
    		new.append(x)
    		iii=0
    		for y in c2:
    			iii=iii+1
    			if iii== ii:
    				new.append(y)
     
     
    	print(new)
     
    k=[1,2,3]
    t=[99,6666,4444]
     
     
    aplatir(k,t)

    Merci à vous !

    Vaness

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    avec des listes de même longueur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l1 = list(range(10))
    l2 = list("abcdefghij")
     
    print(sum(zip(l1,l2),()))

  6. #6
    Membre confirmé
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci beaucoup Josmiley.

    Vaness

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par vanessa75 Voir le message
    j'ai trouvé voici mon code mais j'aurais aimé avoir un code plus pythonique et moins bidouillage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    def aplatir(c1,c2):
    	new=[]
    	ii=0
     
    	for x in c1:
    		ii=ii+1
    		new.append(x)
    		iii=0
    		for y in c2:
    			iii=iii+1
    			if iii== ii:
    				new.append(y)
     
     
    	print(new)
     
    k=[1,2,3]
    t=[99,6666,4444]
     
     
    aplatir(k,t)
    Avant de faire plus pythonique, çà serait bien d'apprendre les bases.
    Si écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def applatir(c1, c2):
          new = []
          for x in range(len(c1)):
               a = c1[x]
               b = c2[x]
               new += [a, b]
          return new
    c'est que vous avez loupé l'intérêt des index côté liste.... Et çà serait bien de passer du temps à revoir ce que raconte votre tuto favori sur cet objet là.
    Ces bases là maîtrisées, vous constaterez que vous écrivez les mêmes séquences de code un peu trop souvent. C'est à ce moment là que vous pourrez rechercher une façon plus concise, moins répétitive de coder et découvrir l'intérêt de fonctions telles que zip, sum,... ou des différentes bibliothèques.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre confirmé
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci Wiztricks c'est vrai que je débute, python est tout nouveau pour moi. J'avance doucement. J'ai plein de choses à revoir et la volonté est là . Merci pour ton code aussi. ça me permet d’être plus familière avec les fonctions.

    Merci à tous

    Vaness

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Encodage] Un classique : prendre des éléments dans un fichier texte
    Par DkA59 dans le forum Langage
    Réponses: 13
    Dernier message: 02/04/2011, 15h17
  2. Réponses: 4
    Dernier message: 23/07/2009, 13h06
  3. Réponses: 2
    Dernier message: 03/12/2007, 09h57
  4. Sauver des éléments d'uue page dans mySQL
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/09/2007, 16h29
  5. Permutez des éléments entre deux zones deux listes
    Par dricks dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/09/2007, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo