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.
Si par "tableau" vous entendez en fait une liste Python, vous pouvez utiliser
a = [0] * 10
ou
a = [None] * 10
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.
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]])
vous pouvez aussi étendre cela avec la méthode de liste étendue.
a= []
a.extend([None]*10)
a.extend([None]*20)
Il suffit de déclarer la liste et d’ajouter chaque élément. Pour ex:
a = []
a.append('first item')
a.append('second item')
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
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.