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 :

tableau(liste imbriquées) problème avec les indices(double)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Par défaut tableau(liste imbriquées) problème avec les indices(double)
    Bonjours à tous et toutes,

    je suis sous PYTHON3.7.2 et pyscripter comme IDE
    rien que du basique... (dans ce cas au moins)

    je suis sur une situation qui m'es pourtant très usuelle... mais, surprise ce matin, un résulat bizarre et je sèche

    si dans mon editeur je fais un tableau (liste de liste):
    - cette forme est sur laquelle je reste perplexe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ooo=[
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',]]
    si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ooo[2][3]='M'   #= rien de plus simple
    et j'obtiens (dans mon éditeur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ooo=[
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', 'M', '0',],
    ['0', '0', '0', '0', '0',],
    ['0', '0', '0', '0', '0',]]  #= tout à fait correct
    par contre :
    si je fais le même tableau "on-the-fly"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oo = ['0']*5
    ooo= [oo]*5
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oo = ['0' for i in range(5)]
    ooo = [oo for for i in range(5)]
    là, même instanciation par indice:
    et j'obtiens (dans mon éditeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ooo=[
    ['0', '0', '0', 'M', '0',],
    ['0', '0', '0', 'M', '0',],
    ['0', '0', '0', 'M', '0',],
    ['0', '0', '0', 'M', '0',],
    ['0', '0', '0', 'M', '0',]]  #= pas correct du tout, :roll:
    donc, si vous avez des idées, ou mieux la raison pour lequel ça plante...

    et encore grand merci...

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

    Vous avez toutes les explications dans cette discussion récente.

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

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    L'astuce "[0]*5" ne marche que pour une liste simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = [0]*5
    print(x)
    x[3] = 9
    print(x)
    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [0, 0, 0, 0, 0]
    [0, 0, 0, 9, 0]
    Pour une liste de listes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    y = [[0 for j in range(0,5)] for i in range(0,5)]
     
    for i in range(0,5):
        print(y[i])
    print()
     
    y[2][3] = 9
     
    for i in range(0,5):
        print(y[i])
    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    [0, 0, 0, 9, 0]
    [0, 0, 0, 0, 0]
    [0, 0, 0, 0, 0]
    Pour les explications: voir la discussion citée.

Discussions similaires

  1. [1.x] Problème avec les doubles liste Symfony
    Par farhaenis dans le forum Symfony
    Réponses: 1
    Dernier message: 10/08/2011, 18h15
  2. [Macro] [Débutant] Problème avec les Indice colonne
    Par BenoitM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2008, 11h30
  3. Problème avec les styles d'un tableau
    Par psychoBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 20/05/2006, 03h13
  4. Réponses: 5
    Dernier message: 11/05/2006, 08h51

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