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.
-----
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.
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.
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.
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.
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 :
Or le programme me retourne le même entier à chaque colonne, et je ne vois pas pourquoi...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)
Merci d'avance,
Latinus.
Dernière modification par Jack ; 17/04/2017 à 17h48. Motif: Ajout balises code
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)
Merci !
N'hésitez pas à me dire, je ne vois vraiment pas...
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
Merci, mais par rapport au sujet ?
J'ai l'impression que le problème est tout bête...
Bonjour,
Regarde ce qui ce passe en modifiant les valeurs à la main, par exemple:
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:>>> 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]]
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]]
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.