## 问题：如何在python中获取任何大小的空数组？

``int a[x];``

``a = []``

``a[4] = 1``

I basically want a python equivalent of this in C:

``````int a[x];
``````

but in python I declare an array like:

``````a = []
``````

and the problem is I want to assign random slots with values like:

``````a[4] = 1
``````

but I can’t do that with python, since the array is empty.

## 回答 0

``a = [0] * 10``

``a = [None] * 10``

If by “array” you actually mean a Python list, you can use

``````a = [0] * 10
``````

or

``````a = [None] * 10
``````

## 回答 1

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

You can’t do exactly what you want in Python (if I read you correctly). You need to put values in for each element of the list (or as you called it, array).

But, try this:

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

For lists of other types, use something besides 0. `None` is often a good choice as well.

## 回答 2

``import numpy as np``

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

You can use numpy:

``````import numpy as np
``````

Example from Empty Array:

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

## 回答 3

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

Just declare the list and append each element. For ex:

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

## 回答 4

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

also you can extend that with extend method of list.

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

## 回答 5

``````# 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``````

If you (or other searchers of this question) were actually interested in creating a contiguous array to fill with integers, consider bytearray and 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
``````

## 回答 6

``````x=[]
for i in range(0,5):
x.append(i)
print(x[i])``````
``````x=[]
for i in range(0,5):
x.append(i)
print(x[i])
``````

## 回答 7

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

If you actually want a C-style array

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

Note that there’s no concept of un-initialized variable in python. A variable is a name that is bound to a value, so that value must have something. In the example above the array is initialized with zeros.

However, this is uncommon in python, unless you actually need it for low-level stuff. In most cases, you are better-off using an empty list or empty numpy array, as other answers suggest.