597 votes

comment déclarer un tableau en python ?

Je suis vraiment nouveau dans le langage python et je me demande comment déclarer un tableau dans ce langage ? Je ne trouve aucune référence aux tableaux dans la documentation.

136 votes

Pour une raison insondable, Python appelle les tableaux "listes". L'école de conception des langages "tout le monde sait comment ça s'appelle, alors on va l'appeler autrement". C'est un nom particulièrement mal choisi, car il ressemble plus à une liste chaînée qu'à un tableau.

46 votes

@Glenn Maynard : probablement parce que dans les langages de type C, les tableaux sont de longueur fixe alors que les listes Python ne le sont pas. Cela ressemble plus au vecteur STL en C++ ou à ArrayList en Java.

137 votes

On l'appelle une liste, parce que c'est une liste. [A(), 1, 'Foo', u'öäöäö', 67L, 5.6]. Une liste. Un tableau est "un arrangement d'éléments à des adresses équidistantes dans la mémoire d'un ordinateur" (wikipedia).

407voto

sepp2k Points 157757
variable = []

Maintenant variable fait référence à une liste (tableau) vide.

Bien entendu, il s'agit d'une mission et non d'une déclaration. Il n'y a aucun moyen de dire en python "cette variable ne doit jamais faire référence à autre chose qu'un tableau", puisque python est typée dynamiquement.

14 votes

Serait-il possible d'initialiser le contenu du tableau, comme en JavaScript ? (par exemple, comme variable = ["Hi", "Hello"]; ?)

3 votes

Dans ce cas, comment déclarer un tableau multidimensionnel (par exemple, un tableau en 2D) ?

8 votes

@AndersonGreen Comme je l'ai dit, il n'existe pas de déclaration de variable en Python. Vous pouvez créer une liste multidimensionnelle en prenant une liste vide et en y plaçant d'autres listes ou, si les dimensions de la liste sont connues au moment de l'écriture, vous pouvez simplement l'écrire comme un littéral comme ceci : my_2x2_list = [[a, b], [c, d]] . En fonction de l'usage que vous faites des tableaux multidimensionnels, vous pouvez également envisager d'utiliser la fonction numpy qui définit des types de tableaux multidimensionnels, homogènes et non encapsulés qui peuvent être beaucoup plus efficaces le cas échéant, et qui sont donc préférables pour les calculs numériques.

138voto

Lennart Regebro Points 52510

Vous ne déclarez pas vraiment les choses, mais c'est ainsi que vous créez un tableau en Python :

from array import array
intarray = array('i')

Pour plus d'informations, consultez le module "array" : http://docs.python.org/library/array.html

Il est possible que vous ne vouliez pas un tableau, mais une liste, mais d'autres ont déjà répondu à cette question :).

11 votes

C'est un peu drôle, mais ce n'est pas vraiment une bonne réponse pour une question étiquetée "débutant". Pour clarifier les choses : en Python, vous utilisez généralement un type de données appelé "a". list . Python dispose d'un type de données spécial appelé " an ". array qui ressemble davantage à un tableau C et qui est peu utilisé.

70 votes

Non, mais tous les autres ont déjà utilisé une liste. J'ai pensé que ce serait une bonne réponse de signaler qu'il existe aussi des tableaux.

10 votes

Super folle props pour cette réponse. Je programme en Python depuis des années et ce n'est que récemment que j'ai réalisé qu'il existait un véritable objet tableau Python, différent des objets liste. Bien que la structure de données soit très similaire, les tableaux limitent le type d'objets qu'ils peuvent contenir. Excellente réponse @LennartRegebro !

67voto

limitCracker Points 377

Je pense que vous voulez une liste dont les 30 premières cellules sont déjà remplies. Donc

   f = []

   for i in range(30):
       f.append(0)

Un exemple d'utilisation de cette méthode est la séquence de Fibonacci. Voir le problème 2 dans Projet Euler

101 votes

C'est une façon plutôt baroque d'initialiser une liste. Essayez f = [0] * 30 à la place.

0 votes

Ce n'est pas la même chose que a = range(10) de @slehar anwer ? J'adore python, sa syntaxe et son côté zen.

0 votes

@erm3nda nope : $ python3 Python 3.4.2 [...] >>> a = range(10) >>> print (a) range(0, 10) >>>

38voto

canadiancreed Points 690

Voilà comment :

my_array = [1, 'rebecca', 'allard', 15]

4 votes

Comme il ne s'agit pas d'un tableau python mais d'une liste python, ne serait-il pas moins déroutant de l'appeler "ma_liste" ?

4 votes

Cela crée une liste, pas un tableau. Ils sont différents et ont des propriétés différentes en Python. Plus précisément, vous pouvez effectuer des opérations numériques sur un tableau, mais pas sur une liste.

26voto

Remi Points 4223

Pour les calculs, utilisez numpy comme ceci :

import numpy as np

a = np.ones((3,2))        # a 2D array with 3 rows, 2 columns, filled with ones
b = np.array([1,2,3])     # a 1D array initialised using a list [1,2,3]
c = np.linspace(2,3,100)  # an array with 100 points beteen (and including) 2 and 3

print(a*1.5)  # all elements of a times 1.5
print(a.T+b)  # b added to the transpose of a

Ces tableaux numpy peuvent être sauvegardés et chargés depuis le disque (même compressés) et les calculs complexes avec de grandes quantités d'éléments sont rapides comme du C. Très utilisé dans les environnements scientifiques. Voir ici pour plus...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X