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 :

Une simple boucle pour remplir une simple liste [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Une simple boucle pour remplir une simple liste
    Bonsoir à tous,

    J'aimerais économiser quelques octets de mon programme qui remplit une liste n*2 (une matrice n*2 quoi).
    Mais cela ne fonctionne pas.

    Voici la fonction qui fonctionne () :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from random import*
     
    def Numero1(n):
     
        L = [None]*n
        for i in range (n):
            L[i] = [None]*2
     
        for k in range (n):
            x,y = randint(50,750),randint(50,750)
            L[k][0], L[k][1] = x,y
        print(L)
     
    Numero1(6)
    Et voici comment je la modifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from random import*  
     
    def Numero2(n):
     
        L = [[None]*2]*n
     
        for k in range (n):
            x,y = randint(50,650),randint(50,650)
            L[k][0], L[k][1] = x,y    
        print(L)
     
    Numero2(6)
    Quand je compare les deux, cela remplit ma liste du même x et du même y () :
    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
    22
    23
    24
    25
    from random import*
     
    def Numero1(n):
     
        L = [None]*n
        for i in range (n):
            L[i] = [None]*2
     
        for k in range (n):
            x,y = randint(50,750),randint(50,750)
            L[k][0], L[k][1] = x,y
        print(L)
     
    def Numero2(n):
     
        L = [[None]*2]*n
     
        for k in range (n):
            x,y = randint(50,650),randint(50,650)
            L[k][0], L[k][1] = x,y    
        print(L)
     
    Numero1(6)
    print()
    Numero2(6)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Leododo Voir le message
    J'aimerais économiser quelques octets de mon programme qui remplit une liste n*2 (une matrice n*2 quoi).
    Mais cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from random import*  
     
    def Numero2(n):
     
        L = [[None]*2]*n
     
        for k in range (n):
            x,y = randint(50,650),randint(50,650)
            L[k][0], L[k][1] = x,y    
        print(L)
     
    Numero2(6)
    Quand je compare les deux, cela remplit ma liste du même x et du même y () :
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from random import*  
     
    def Numero2(n):
     
        L = []
     
        for k in range (n):
            x,y = randint(50,650),randint(50,650)
            L.append([x, y])
        return L
     
    print(Numero2(6))
    Clodion

    PS ou sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def Numero2(n):
     
        L = [[None]*2]*n
     
        for k in range (n):
            x,y = randint(50,650),randint(50,650)
            L[k] = [x,y]
        print(L)

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Ouh c'est puissant, grand merci pour ton aide

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ou avec une liste compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def Numero2(n):
        return [[randint(50,650),randint(50,650)] for _ in range(n)]
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Ou avec une liste compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def Numero2(n):
        return [[randint(50,650),randint(50,650)] for _ in range(n)]
    ça marche en plus

    Je ne connaissais pas cette écriture, merci de me l'avoir fait découvrir
    J'économise encore plus de ligne

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

Discussions similaires

  1. [XL-MAC 2011] Remplir une table en fonction d'une condition à l'aide d'une itération
    Par chou2best dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/11/2015, 16h29
  2. [XL-2003] macro pour remplir une cellule en fonction d'une autre
    Par kamilane dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/07/2010, 15h40
  3. Probleme dans une boucle while pour remplir une JTable
    Par sky88 dans le forum Composants
    Réponses: 3
    Dernier message: 27/03/2008, 14h01
  4. Réponses: 16
    Dernier message: 04/10/2007, 13h06
  5. macro pour remplire une liste dans une même cellule
    Par fabiend83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/07/2006, 09h32

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