Как мне получить пустой массив любого размера в Python? - PullRequest
91 голосов
/ 05 марта 2011

Я в основном хочу Python-эквивалент этого в C:

int a[x];

, но в Python я объявляю массив вроде:

a = []

, и проблема в том, что я хочу назначить случайныйслоты со значениями вроде:

a[4] = 1

, но я не могу сделать это с питоном, так как массив пуст.

Ответы [ 7 ]

186 голосов
/ 05 марта 2011

Если под «массивом» вы на самом деле имеете в виду список Python, вы можете использовать

a = [0] * 10

или

a = [None] * 10
17 голосов
/ 05 марта 2011

Вы не можете делать именно то, что вы хотите в Python (если я правильно вас прочитал). Вам необходимо ввести значения для каждого элемента списка (или, как вы его называли, массива).

Но попробуйте это:

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

Для списков других типов используйте что-то кроме 0. None также часто является хорошим выбором.

12 голосов
/ 14 сентября 2014

Вы можете использовать numpy:

импортировать numpy как np

Пример из Пустой массив :

np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])  
5 голосов
/ 05 марта 2011

также вы можете расширить это с помощью метода расширения списка.

a= []
a.extend([None]*10)
a.extend([None]*20)
2 голосов
/ 25 октября 2016

Просто объявите список и добавьте каждый элемент.Например:

a = []
a.append('first item')
a.append('second item')
1 голос
/ 27 апреля 2019

Если вы (или другие искатели этого вопроса) действительно были заинтересованы в создании непрерывного массива для заполнения целыми числами, рассмотрите bytearray и 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
0 голосов
/ 06 июня 2019

Если вам действительно нужен массив в стиле C

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

Обратите внимание, что в python отсутствует понятие неинициализированная переменная.Переменная - это имя, которое связано со значением, поэтому это значение должно иметь что-то.В приведенном выше примере массив инициализируется нулями.

Тем не менее, это редко встречается в python, если он вам действительно не нужен для низкоуровневых вещей.В большинстве случаев лучше использовать пустой список или пустой массив numpy, как предлагают другие ответы.

...