web-dev-qa-db-fra.com

Comment obtenir un tableau vide de toute taille en python?

Je veux fondamentalement un python équivalent de ceci en C:

int a[x];

mais dans python, je déclare un tableau tel que:

a = []

et le problème est que je veux assigner des slots aléatoires avec des valeurs comme:

a[4] = 1

mais je ne peux pas le faire avec python, car le tableau est vide.

92
user299648

Si par "tableau" vous entendez en fait une liste Python, vous pouvez utiliser

a = [0] * 10

ou

a = [None] * 10
190
Sven Marnach

Vous ne pouvez pas faire exactement ce que vous voulez dans Python (si je vous ai bien lu). Vous devez indiquer des valeurs pour chaque élément de la liste (ou comme vous l'avez appelé, tableau).

Mais essayez ceci:

a = [0 for x in range(N)]  # N = size of list you want
a[i] = 5  # as long as i < N, you're okay

Pour les listes d'autres types, utilisez autre chose que 0. None est également un bon choix.

17
dappawit

Vous pouvez utiliser numpy:

importer numpy en tant que np

Exemple de tableau vide :

np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])  
15
DanielTheRocketMan

vous pouvez aussi étendre cela avec la méthode de liste étendue.

a= []
a.extend([None]*10)
a.extend([None]*20)
5
Pythoni

Il suffit de déclarer la liste et d’ajouter chaque élément. Pour ex:

a = []
a.append('first item')
a.append('second item')
3
Lyle

Si vous (ou d'autres chercheurs de cette question) êtes réellement intéressés par la création d'un tableau contigu à remplir par des entiers, considérez structure secondaire et memoryivew :

# cast() is available starting Python 3.3
size = 10**6 
ints = memoryview(bytearray(size)).cast('i') 

ints.contiguous, ints.itemsize, ints.shape
# (True, 4, (250000,))

ints[0]
# 0

ints[0] = 16
ints[0]
# 16
1
Jay

Si vous voulez réellement un tableau de style C

import array
a = array.array('i', x * [0])
a[3] = 5
try:
   [5] = 'a'
except TypeError:
   print('integers only allowed')

Notez qu'il n'y a pas de concept de variable non initialisée en python. Une variable est un nom lié à une valeur, donc cette valeur doit avoir quelque chose. Dans l'exemple ci-dessus, le tableau est initialisé avec des zéros.

Cependant, cela est rare en python, sauf si vous en avez réellement besoin pour des choses de bas niveau. Dans la plupart des cas, il est préférable d’utiliser une liste vide ou un tableau numpy vide, comme le suggèrent d’autres réponses.

0
blue_note