2010-05-25 10 views
3

Comment je peux définir un tableau de nombres entiers en code PythonEntier tableau en Python

Dites si ce code est correct. ou pas

pos = [int] 

len = 99 

for i in range (0,99): 
    pos[i]=7 
+1

Vous pourriez peut-être expliquer votre objectif. Ce n'est pas trop commun de remplir une liste comme celle-ci. –

+0

Vous n'avez pas besoin de déclarer les types en Python. '[int]' définit une liste d'un élément, qui est le type 'int' (comme un objet de première classe lui-même). – Santa

Répondre

0

Une façon est:

pos = [7 for _ in xrange(0,99)] 

en Python 2 ou:

pos = [7 for _ in range(0,99)] 

en Python 3. Ce sont list comprehensions, et sont faciles à étendre pour un travail plus complexe.

aussi:

pos = [int] 

ne fait pas beaucoup de sens. Vous créez une liste avec le seul élément étant le type int.

+0

'xrange (0, 99) == xrange (99)': le premier élément est zéro, par défaut! – EOL

3

vous ne déclarez pas le type de variables en python, donc pas pos=[int] tout ce que vous avez à faire:

pos=[] 
for i in range(99): 
    pos.append(7) 
11

Pourquoi ne pas simplement:

pos = [7] * 99 

C'est le plus pythonique, en mon avis.

2

Vous pouvez simplement faire

pos = [7] * 99 
print pos #will print the whole array [7, 7, .... 7] 
5
import array 

pos = array.array('l', 7 * [99]) 

Le module array de la bibliothèque standard de Python est la seule façon de faire un tableau qui vient avec Python (le module tiers numpy offre d'autres moyens, mais les besoins doivent être téléchargés et installés séparément) - ce que fait votre Q, ainsi que chaque réponse jusqu'à présent, est de construire un list, pas un array.

En particulier, il n'y a pas de contrainte que la liste pos construite dans votre Q et plusieurs Comme contient seulement des entiers - alors que, avec l'extrait que je donne, vous ne obtenir cette contrainte (signé entiers 32 bits ce cas, pour être précis), qui vous limite rigoureusement mais enregistre aussi un tas de mémoire (un tableau d'entiers devrait prendre environ un cinquième de la quantité de mémoire qu'une liste remplie d'entiers prendra, sauf s'il y a beaucoup de duplication pérenne les éléments des listes).

BTW, si vous dites array quand vous voulez dire list (juste au cas où listest ce que vous vouliez dire), vous êtes sûr de causer beaucoup de confusion - dire ce que vous voulez dire, et qui signifie ce que vous dites, aide un lot dans une communication claire, sans surprise!-)

+4

'0 <= Probabilité (" OP signifie array.array, not list "| code_in_the_question)

1

Si vous voulez juste déclarer le tableau, tout ce que vous avez à faire en python est:

pos = [] 

Si vous voulez remplir le tableau avec 99 7 de:

pos = [7] * 99 

Si vous souhaitez remplir le tableau en fonction d'un modèle:

pos = [i for i in range(99)] 
Questions connexes