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 :

remplir une liste par les liste venant des itération différente , avec distinction


Sujet :

Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut remplir une liste par les liste venant des itération différente , avec distinction
    salut,
    supposant j'ai 'n' iteration à partir de chaque itération je remplis une liste , je fait le clear pour faire la distinction entre les éléments venu de i, et le copy pour sauvegarder ce que je vais perdre , le problème c'est que la résultat final est la dernière liste obtenu n fois .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in liste:
        L.clear()
        L.append(elt)
        l1=L.copy()
        print (L)
        final.append(i,l1)

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    difficile à dire comme ça, à quoi correspond elt ? ça ne devrait pas plutôt être i ?

    j'ai par ailleurs du mal à comprendre ce que tu cherches à faire et l'impression que ton code est inutilement compliqué

    tu pourrais donner un exemple concret de données en entrée et le résultat attendu ?

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Ton code est absolument incompréhensible. On ne sait pas ce qu'est elt, pourquoi le clear() dans la boucle (donc boucler n fois et à chaque fois effacer la liste pour y mettre ce "elt" qui n'a jamais changé ) , pourquoi copier L et append() qui est appelé avec 2 arguments alors qu'il n'en veut qu'un seul.

    Sans déconner, chaque fois que tu viens c'est la même chose. Tu écris des instructions Python qui n'ont ni queue ni tête, tu changes de besoin au fil du temps et tu ne donnes même pas les infos complètes de ce que tu veux. Alors ok au début on voulait bien admettre que tu débutais mais ce début c'était en mars 2019. Là 18 mois plus tard tu continues à coder du Python n'importe comment. J'ai vraiment l'impression que tu te fouts de nous.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    difficile à dire comme ça, à quoi correspond elt ? ça ne devrait pas plutôt être i ?

    j'ai par ailleurs du mal à comprendre ce que tu cherches à faire et l'impression que ton code est inutilement compliqué

    tu pourrais donner un exemple concret de données en entrée et le résultat attendu ?

    oui peut être parce-que mon code est trop compliqué j'essaie de réduire le problème au maximum les éléments sont , des liste, liste de tuple , tuple..... est à chwaque itération on extrait des éléments différents ,
    donc le code c'est comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i in Source_Cpus:
       final_migratory_tasks.clear()
       final_migratory_tasks.append(elt)
       final_final_migratory_tasks=final_migratory_tasks.copy()
       final_migratory_tasks_per_source.append(i, final_migratory_tasks)
       print ("final_migratory_tasks du proc" , str(i) , final_migratory_tasks)
       print ("final_migratory_tasks_per_source" , str(i) ,  final_migratory_tasks_per_source)
    print (" all final_migratory_tasks_per_source" , str(i) , final_final_migratory_tasks)
    comme exemple:
    final_migratory_tasks du proc 1 [5, (['14'], 'thread')]
    final_migratory_tasks_per_source[1, (['14'], 'thread')]

    final_migratory_tasks_per_source 2 [(2, [5,[3,8], (['1'], 'thread')]),[[7]]]
    final_migratory_tasks_per_source [2, ([(2, [5,[3,8], (['1'], 'thread')]),[[7]]])]

    le résultat souhaité au final est :
    all final_migratory_tasks_per_source [1, (['14'], 'thread')],2, ([(2, [5,[3,8], (['1'], 'thread')]),[[7]]])]

    alors que ça donne que la résultat dudernière itération en nombre d'itération copie
    final_migratory_tasks_per_source [2, ([(2, [5,[3,8], (['1'], 'thread')]),[[7]]]),2, ([(2, [5,[3,8], (['1'], 'thread')]),[[7]]])]
    c'est pourquoi j'ai fait le copy pour récupérer le contenu

  5. #5
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Ton code est absolument incompréhensible. On ne sait pas ce qu'est elt, pourquoi le clear() dans la boucle (donc boucler n fois et à chaque fois effacer la liste pour y mettre ce "elt" qui n'a jamais changé ) , pourquoi copier L et append() qui est appelé avec 2 arguments alors qu'il n'en veut qu'un seul.

    Sans déconner, chaque fois que tu viens c'est la même chose. Tu écris des instructions Python qui n'ont ni queue ni tête, tu changes de besoin au fil du temps et tu ne donnes même pas les infos complètes de ce que tu veux. Alors ok au début on voulait bien admettre que tu débutais mais ce début c'était en mars 2019. Là 18 mois plus tard tu continues à coder du Python n'importe comment. J'ai vraiment l'impression que tu te fouts de nous.

    que des préjugés

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par FATENMRABET Voir le message
    oui peut être parce-que mon code est trop compliqué j'essaie de réduire le problème au maximum les éléments sont , des liste, liste de tuple , tuple..... est à chwaque itération on extrait des éléments différents
    Si vous commenciez par exposer le problème à résoudre et à l'illustrer par quelques exemples montrant de quoi on part et ce qu'on cherche à obtenir...

    Là avec juste un bout de code qu'on ne peut pas exécuter et qui, en première lecture, ne peut pas fonctionner... impossible de vous aider.

    Et comme vous êtes multirécidiviste dans le genre, à part vous secouer un peu pour que vous compreniez qu'on ne peut pas vous aider dans ces conditions...

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

  7. #7
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Si vous commenciez par exposer le problème à résoudre et à l'illustrer par quelques exemples montrant de quoi on part et ce qu'on cherche à obtenir...

    Là avec juste un bout de code qu'on ne peut pas exécuter et qui, en première lecture, ne peut pas fonctionner... impossible de vous aider.

    Et comme vous êtes multirécidiviste dans le genre, à part vous secouer un peu pour que vous compreniez qu'on ne peut pas vous aider dans ces conditions...

    - W
    ok merci

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    que des préjugés
    Absolument pas. Un préjugé est une opinion préconçue. Moi j'ai donné des affirmations basées sur les absurdités que tu as écrites ici (après-tout, ce append() débile, ce clear() à chaque itération et ce "elt" inexistant c'est pas moi qui les ai inventés), et sur toutes les autres que tu écris depuis 18 mois.

    Citation Envoyé par FATENMRABET Voir le message
    Citation Envoyé par wiztricks Voir le message
    Et comme vous êtes multirécidiviste dans le genre, à part vous secouer un peu pour que vous compreniez qu'on ne peut pas vous aider dans ces conditions...
    ok merci
    Ah. De ma part quand je te dis que tu écris n'importe quoi et que c'est habituel c'est un préjugé mais quand wiztricks dit la même chose lui tu le remercies. Ok, je vois le genre...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    salut,
    supposant j'ai 'n' iteration à partir de chaque itération je remplis une liste , je fait le clear pour faire la distinction entre les éléments venu de i, et le copy pour sauvegarder ce que je vais perdre , le problème c'est que la résultat final est la dernière liste obtenu n fois .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in liste:
        L.clear()
        L.append(elt)
        l1=L.copy()
        print (L)
        final.append(i,l1)
    Bonjour,
    Si j'ai compris la demande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    l = []
    lcopy = []
    for i in range(10):
        l.clear()
        l.append(i)
        lcopy.append(l[:])
    print(lcopy)
    Pour eviter les effets bords entre tes listes, il faut travailler sur une copie de ta liste l[:]
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Pour eviter les effets bords entre tes listes, il faut travailler sur une copie de ta liste l[:]
    Ou plus simplement éviter cette liste intermédiaire totalement absurde qui, à chaque itération, ne contient qu'un élément !!!
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lcopy = []
    for i in range(10):
        lcopy.append([i,])
    print(lcopy)

    Ce qui ouvre alors la voie vers les listes en intension...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lcopy=[[i,] for i in range(10)]
    print(lcopy)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ou plus simplement éviter cette liste intermédiaire totalement absurde qui, à chaque itération, ne contient qu'un élément !!!
    Je pense que le PO a tenté à travers un code minimal montrer sa problèmatique, qui serait celle de la gestion des effets de bords lors de la copie d'objet mutable( enfin je l'imagine)...
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Je pense que le PO a tenté à travers un code minimal montrer sa problèmatique, qui serait celle de la gestion des effets de bords lors de la copie d'objet mutable( enfin je l'imagine)...
    Une bien piètre tentative alors avec ce code tellement minimaliste et tellement foiré qu'il est inutilisable en l'état et où cette problématique, même sur un code rectifié, n'apparaitra pas puisque le PO a utilisé copy()
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a=[1, 2, 3]
    b=a
    b.append("toto")
    print(a, id(a))
    print(b, id(b))

    Et donc les différentes façon de résoudre le souci (dont ta remarque avec le slice fait partie ainsi que la méthode copy())
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a=[1, 2, 3]
    b=a[:]
    c=list(a)
    d=a.copy()
    b.append("pim")
    c.append("pam")
    d.append("poum")
    print(a, id(a))
    print(b, id(b))
    print(c, id(c))
    print(d, id(d))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Je pense que le PO a tenté à travers un code minimal montrer sa problèmatique, qui serait celle de la gestion des effets de bords lors de la copie d'objet mutable( enfin je l'imagine)...
    ce que j'ai voulu est que à chaque itération je distingue les éléments venu de chaque itération et à la fin construire une structure globale ayant tout les éléments distinct de chaque itération, j'ai juste éliminer le clear et récuperer la structure final. merci beaucoup votre code était utile , bein juste le slice et le copy j'arrive pas à bien distinguer la différence normalement les 2 donne de nouveau rference à des nouveau objet non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    l = []
    lcopy = []
    for i in range(10):
        #l.clear()
        l.append(i)
        lcopy.append(l[:])
        print(i,l)
    print(lcopy)

  14. #14
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    normalement les 2 donne de nouveau rference à des nouveau objet non?
    oui.
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FATENMRABET Voir le message
    bein juste le slice et le copy j'arrive pas à bien distinguer la différence
    Parce qu'il n'y en a pas. Le slice est un opérateur Python tandis que le copy() est une méthode de l'objet "list" mais les deux résultats sont visuellement équivalents => création d'une nouvelle référence. Fatalement l'un des deux doit être plus rapide que l'autre mais j'ai jamais fait de tests pour regarder.

    [edit]Bon, je viens de faire un petit test rapide et il semble que la méthode basée sur list() soit la plus rapide
    Code python : 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
    from time import time
    import random
     
    def timereps(reps, func, *args):
    	start = time()
    	for i in range(reps): r=func(*args)
    	end = time()
    	return (r, end - start)
    # def timereps
     
    def cop1(l): return ("slice", l[:])
    def cop2(l): return ("method", l.copy())
    def cop3(l): return ("list", list(l))
     
    random.seed()
    a=list(range(1000000))
    for f in random.sample((cop1, cop2, cop3), 3):			# Pour appeler les 3 fonctions dans un ordre aléatoire
    	r=timereps(10000, f, a)
    	print("%s: %s" % (r[0][0], r[1]))

    Et le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    slice: 67.2080409526825
    list: 61.38530492782593
    method: 67.28856992721558
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #16
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    sinon pourquoi ne pas tout simplement dire ce que vous avez en entrer et ce que vous souhaitez en sortie ?

Discussions similaires

  1. [PowerShell] Création d'un tableau et remplir une colonne par les valeurs d'un fichier
    Par Francky_bullet dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 22/03/2018, 14h14
  2. Afficher une liste dans des pages différentes
    Par B.M.W83 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 05/01/2018, 16h53
  3. Réponses: 1
    Dernier message: 08/08/2012, 14h52
  4. Réponses: 5
    Dernier message: 05/04/2012, 22h06
  5. Réponses: 6
    Dernier message: 21/07/2008, 11h21

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