Tableau de listes ?
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Tableau de listes ?



  1. #1
    Latinus

    Tableau de listes ?


    ------

    Bonjour,

    Est-il possible de créer des tableaux de listes en Python ?
    Par exemple peut-on créer :
    array([[[0,0],[0,0],[0,0]],
    [[0,0],[0,0],[0,0]],
    [[0,0],[0,0],[0,0]]]) ?

    Merci de votre aide !
    Bonne soirée,
    Latinus.

    -----

  2. #2
    pm42

    Re : Tableau de listes ?

    Je suppose que tu parles des array dans NumPy ?
    Si oui, tu peux effectivement écrire a= np.array([[[0,0],[0,0],[0,0]], [[0,0],[0,0],[0,0]], [[0,0],[0,0],[0,0]]])

    après tu peux faire a[1] qui va te retourner :
    array([[0, 0],
    [0, 0],
    [0, 0]])

    ou a[1][1] pour avoir array([0, 0])

    Mais je ne sais pas si c'est ce que tu veux. Il suffit d'essayer ceci dit.

  3. #3
    Latinus

    Re : Tableau de listes ?

    Bonsoir,

    Merci de votre réponse.
    Mon problème en fait, c'est que je souhaiterais que chaque "ligne" Python soit alignée...

    Par exemple si l'on créé une matrice de zéros de dimensions 5x5, on aura 5 lignes de 5 zéros.

    Je voudrais la même chose dans l'idée pour avoir 5 lignes de 5 couples, seulement à chaque crochet, Python retourne à la ligne...

    Je voudrais modéliser une ville, et dans chaque case du tableau il y aurait deux paramètres correspondant à une seule habitation. Et si il y a retour à la ligne à chaque crochet, ma ville aura une forme plutôt bizarre disons...

    Je ne sais pas s'il y a une autre manière de procéder où si je m'y prends bien...

    Merci de votre aide !

    Bonne soirée,
    Latinus.

  4. #4
    pm42

    Re : Tableau de listes ?

    Je ne suis pas sur qu'il faille utiliser les array. Les listes Python conviendraient parfaitement. Ce que vous décrivez est une liste de liste d'un objet, lequel objet contient vos 2 paramètres.

  5. A voir en vidéo sur Futura
  6. #5
    Latinus

    Re : Tableau de listes ?

    Bonjour,

    Je me suis donc débarrassé des array, et j'ai procédé ainsi pour créer le tableau à 3 dimensions : n*[p*[x*[0]]].

    Seulement, pour le remplir, j'ai rencontré un souci.
    Par exemple, même avec un tableau en 2D, que l'on veut remplir d'entiers au hasard entre 0 et 10 :

    Code:
    v=n*[p*[0]]
    k=randint(0,10)
    for i in range(n):
       for j in range(p):
          v[i][j]=k
          k=randint(0,10)
    Or le programme me retourne le même entier à chaque colonne, et je ne vois pas pourquoi...

    Merci d'avance,
    Latinus.
    Dernière modification par Jack ; 17/04/2017 à 17h48. Motif: Ajout balises code

  7. #6
    Latinus

    Re : Tableau de listes ?

    L'indentation n'est pas passée :

    v=n*[p*[0]]
    k=randint(0,10)
    ___for i in range(n):
    ______for j in range(p):
    _________v[i][j]=k
    _________k=randint(0,10)

  8. #7
    Chanur

    Re : Tableau de listes ?

    Citation Envoyé par Latinus Voir le message
    L'indentation n'est pas passée :
    Parce qu'il faut utiliser les balises [code] (icône #)
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  9. #8
    Latinus

    Re : Tableau de listes ?

    Merci !
    N'hésitez pas à me dire, je ne vois vraiment pas...

  10. #9
    JPL
    Responsable des forums

    Re : Tableau de listes ?

    Pour garder l'indentation d'un code il faut l'écrire entre les balises [code].....[/code] ce qui se fait automatiquement en cliquant sur la petite icône # dans l'éditeur en mode avancé.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  11. #10
    Latinus

    Re : Tableau de listes ?

    Merci, mais par rapport au sujet ?
    J'ai l'impression que le problème est tout bête...

  12. #11
    CM63

    Re : Tableau de listes ?

    Bonjour,

    Regarde ce qui ce passe en modifiant les valeurs à la main, par exemple:

    Code:
    >>> n=3
    >>> p=4
    v=n*[p*[0]]
    >>> v
    [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
    >>> v[1][1]
    0
    >>> v[1][1]=6
    >>> v
    [[0, 6, 0, 0], [0, 6, 0, 0], [0, 6, 0, 0]]
    >>> v[1][0]=10
    >>> v
    [[10, 6, 0, 0], [10, 6, 0, 0], [10, 6, 0, 0]]
    Quand je modifie v[1][1] en fait ça modifie aussi v[0][1] et v[2][1]. En fait v[0], v[1] et v[2] contiennent la même valeur : le pointeur sur le même tableau à 4 positions. Pour éviter cela, il faut utiliser append:

    Code:
    >>> v=[p*[0]]
    >>> v
    [[0, 0, 0, 0]]
    >>> v.append(p*[0])
    >>> v
    [[0, 0, 0, 0], [0, 0, 0, 0]]
    >>> v[0][0]=1
    >>> v
    [[1, 0, 0, 0], [0, 0, 0, 0]]

  13. #12
    pm42

    Re : Tableau de listes ?

    A titre d'info, la réponse a été donnée dans l'autre fil et Latinus a trouvé un code qui fait ce qu'il veut.

Discussions similaires

  1. Python Listes
    Par acdcc93 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 31/10/2016, 23h18
  2. listes chainées
    Par dadabouin dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 15/12/2014, 21h35
  3. Listes alcools
    Par invite34ae7779 dans le forum Chimie
    Réponses: 1
    Dernier message: 07/02/2008, 13h20
  4. Familles et listes...
    Par Deeprod dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 14/03/2007, 22h04
  5. Listes d'attentes
    Par invite56713b5b dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 29/07/2005, 19h26