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 :

Déclaration d'une liste vide Python de taille dynamique


Sujet :

Python

Vue hybride

selmagsi Déclaration d'une liste vide... 18/11/2018, 19h03
wiztricks Salut, Vous ne... 18/11/2018, 19h24
Sve@r Bonjour Une liste est... 18/11/2018, 20h12
selmagsi Ok la c'est compris.... 18/11/2018, 20h35
wiztricks Ben si vous écrivez: >>> A... 18/11/2018, 20h55
flapili Bonjour, J'aimerai bien... 18/11/2018, 22h14
selmagsi ça je n'ai pas compris.quelle... 18/11/2018, 22h43
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut Déclaration d'une liste vide Python de taille dynamique
    salut les dévelppeurs,
    J'ai besoin de travailler avec une liste (de listes) de Taille X. elle peut aller jusqu'à 149. comment faire pour la déclarer sans préciser la taille?
    La déclaration ci dessous me cause problème :

    exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Pt[ti].append(X[j])
     
    IndexError: list index out of range

    par contre cette déclaration marche parfaitement :

    comment faire pour que la taille soit dynamique?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Salut,

    Citation Envoyé par selmagsi Voir le message
    J'ai besoin de travailler avec une liste (de listes) de Taille X. elle peut aller jusqu'à 149. comment faire pour la déclarer sans préciser la taille?
    Vous ne déclarez pas une liste mais vous assignez un objet list à une variable.
    Exemple: L = [] assigne à L une liste vide.
    Et si vous voulez créer une liste de X éléments, vous fabriquez cette liste sous forme littérale: L = [ 0, 0, 0, 0 ] ou L = [0,] * 4 ou via une boucle L = [ 0 for _ in range(4) ].

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

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 821
    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 821
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par selmagsi Voir le message
    comment faire pour que la taille soit dynamique?
    Bonjour

    Une liste est toujours dynamique. Dès qu'on y insère/ajoute un élément elle s'agrandit pour y faire rentrer l'élément inséré/ajouté

    Citation Envoyé par selmagsi Voir le message
    par contre cette déclaration marche parfaitement : Pt=149*[[]]comment faire pour la déclarer sans préciser la taille?
    Soit on déclare une liste vide, et ensuite on crée les éléments à la volée via append() ou insert(), soit on déclare une liste contenant n éléments (ex Pt=[123,] * 5 => va créer [123, 123, 123, 123, 123] mais dans ce cas, on est obligé de préciser la taille.
    Ici, avec Pt=[[]] * 149 on crée une liste de 149 listes vides. Et si on avait écrit avec Pt=[[None] * 149] * 149 ça aurait créé 149 listes contenant chacune 149 éléments (tous à None ce qui permet de symboliser l'élément vide).
    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 éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    Ok la c'est compris.
    Maintenant j'ai un autre problème avec les élément de Pt , comme j'ai mentionné se sont eux meme des listes. mon implémentation sencait donner des liste différentes mais la toute les liste sont identique , je ne sais pas pourquoi!!

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     while(1):
     
      ts=0
      while(1): 
     
               if(X[t[ts]] in Q): 
     
                   break
               t.remove(t[ts]) 
     
     
      cpt=0
     
      for j in range(1, len(X)):
     
              x=distance.euclidean(X[t[ts]], X[j]) 
              if (x>=s and (X[j] in Q)):
     
                Pt[ti].append(X[j])
     
                Q.remove(X[j])
     
                cpt=cpt+1;
     
      if(cpt!= 0):
             ti=ti+1
     
             k.append(X[t[ts]])
      t.remove(t[ts])
      if(len (Q)==0 or len (t)==0):
     
             break 
      #del Pt[ti][:]   
     
     return S

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Citation Envoyé par selmagsi Voir le message
    mon implémentation sencait donner des liste différentes mais la toute les liste sont identique
    Ben si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> A = [1, 2, 3]
    >>> L = [ A,]*3
    >>> L
    [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
    >>>
    vous vous retrouvez avec un truc qui ressemble à une liste de listes alors qu'en fait vous avez fabriqué une liste contenant 3 fois le même objet A. Donc s'il change:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> A[0] = 'XXX'
    >>> L
    [['XXX', 2, 3], ['XXX', 2, 3], ['XXX', 2, 3]]
    >>>
    les 3 références changent.

    Citation Envoyé par selmagsi Voir le message
    je ne sais pas pourquoi!!
    Parce que c'est comme çà que Python fonctionne et votre code me semble bien compliqué pour que vous en soyez surpris sauf à avoir survolé votre tuto. préféré.

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

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

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Bonjour,
    J'aimerai bien aider mais votre code est tout bonnement impossible à comprendre, il semble mal pensé dès le départ...

    D'habitude en 1 coup d'œil on est capable de comprendre ce que cherche à faire un code mais alors là c'est mission impossible.

    Énoncé ce que vous voulez faire s'il vous plaît se sera le mieux à faire. À la lecture du code on remarque pas mal de mimiques du C (peut être je me trompe), commencé par de l'algorithmie, une feuille et un crayon.

    Ps le second while(1) est indenté? Sur mobile on dirais bien mais sur mobile pas évident à voir et si il l'est alors l'indentation n'est pas cohérente et est différente toutes les 3 lignes...

  7. #7
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    Citation Envoyé par flapili Voir le message
    Bonjour,
    J'aimerai bien aider mais votre code est tout bonnement impossible à comprendre, il semble mal pensé dès le départ...

    D'habitude en 1 coup d'œil on est capable de comprendre ce que cherche à faire un code mais alors là c'est mission impossible.

    Énoncé ce que vous voulez faire s'il vous plaît se sera le mieux à faire. À la lecture du code on remarque pas mal de mimiques du C (peut être je me trompe), commencé par de l'algorithmie, une feuille et un crayon.

    Ps le second while(1) est indenté? Sur mobile on dirais bien mais sur mobile pas évident à voir et si il l'est alors l'indentation n'est pas cohérente et est différente toutes les 3 lignes...
    Meric pour vos remarque constructives.
    Bh c'est justement un algorithme que je suis en train de coder en python qui donne ça! bh je ne sais pas pourquoi tous les élément de Pt sont identiques , quand je suis a la position ti de Pt et que je rajoute un X je fait un remove avant d'incrémenter le ti , mais dans mon cas X et dans Pt[ti] et dans Pt[ti+1].

  8. #8
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ben si vous écrivez:

    vous vous retrouvez avec un truc qui ressemble à une liste de listes alors qu'en fait vous avez fabriqué une liste contenant 3 fois le même objet A. Donc s'il change:


    - W


    ça je n'ai pas compris.quelle ligne prouve ça!!

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

Discussions similaires

  1. déclaration d'une liste circulaire
    Par infonew dans le forum C
    Réponses: 1
    Dernier message: 26/03/2008, 22h20
  2. supprimer une liste vide
    Par ulysse031 dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2007, 20h32
  3. Supprimer les doubles d'une liste en python
    Par Sebcaen dans le forum Général Python
    Réponses: 2
    Dernier message: 22/10/2006, 18h41
  4. Réinitialiser une ClistCtrl à une list vide
    Par likenoother dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2006, 14h32
  5. Réponses: 16
    Dernier message: 19/11/2005, 16h47

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