Comment initier un tableau 2-D en Python
- méthode de compréhension de liste pour initier un tableau 2D
-
Méthode imbriquée
range
pour initier un tableau 2D -
Méthode
NumPy
pour initier un tableau 2D
Ce guide tutoriel présente différentes méthodes pour initier un tableau 2D en Python. Nous allons faire un tableau 2D 3x5
dans les exemples suivants.
méthode de compréhension de liste pour initier un tableau 2D
>>> column, row = 3, 5
>>> array2D = [[0 for _ in range(row)] for _ in range(column)]
>>> array2D
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Cette méthode de compréhension de liste imbriquée crée un tableau 2-D avec la valeur initiale 0
. Bien sûr, vous pouvez changer la valeur initiale pour n’importe quelle valeur que vous devez assigner dans votre application.
Méthode imbriquée range
pour initier un tableau 2D
Si vous ne vous souciez pas de la valeur initiale dans le tableau 2-D, la valeur 0
pourrait même être éliminée.
En Python 2.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
En Python 3.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]
Nous ne pouvions pas simplement utiliser range(x)
pour initier un tableau 2-D en Python 3.x parce que range
retourne un objet contenant une séquence d’entiers en Python 3.x, mais pas une liste d’entiers comme en Python 2.x.
range
en Python 3.x est plus similaire à xrange
en Python 2.x. L’objet range
en Python 3.x est immuable, par conséquent, vous n’assignez pas d’éléments à ses éléments.
Si vous avez besoin de l’assignation d’éléments, vous devez convertir l’objet range
en objet list
.
>>> A = [list(range(row)) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
Méthode [0] * N
pour initier un tableau 2D
Une façon pythonique d’initier un tableau 2D pourrait être
>>> column, row = 3, 5
>>> A = [[0]*row for _ in range(column)]
>>> A
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Bien que nous devions être prudents lorsque nous utilisons la multiplication de liste parce qu’elle crée simplement une séquence avec plusieurs fois des références à un même objet, nous sommes soulagés d’utiliser [0]*n
ici parce que l’objet de données 0
est immuable de sorte que nous ne rencontrerons jamais de problèmes même avec des références au même objet immuable.
Méthode NumPy
pour initier un tableau 2D
En plus du tableau Python natif, NumPy
devrait être la meilleure option pour créer un tableau 2-D, ou pour être plus précis, une matrice.
Vous pourriez créer une matrice remplie de zéros avec numpy.zeros
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.zeros(column, row)
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
Ou initier une matrice remplie de ones
avec numpy.ones
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.ones((column, row))
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
Vous pouvez même créer un nouveau tableau sans initialiser les entrées avec numpy.empty
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.empty((5,5))
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306,
1.33511562e-306, 1.89146896e-307],
[7.56571288e-307, 3.11525958e-307, 1.24610723e-306,
1.37962320e-306, 1.29060871e-306],
[2.22518251e-306, 1.33511969e-306, 1.78022342e-306,
1.05700345e-307, 1.11261027e-306],
[1.11261502e-306, 1.42410839e-306, 7.56597770e-307,
6.23059726e-307, 1.42419530e-306],
[7.56599128e-307, 1.78022206e-306, 8.34451503e-308,
2.22507386e-306, 7.20705877e+159]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook