Мне в основном нужен Python-эквивалент этого в C:
int a[x];
но в python я объявляю такой массив:
a = []
и проблема в том, что я хочу назначить случайные слоты со значениями вроде:
a[4] = 1
но я не могу этого сделать с python, поскольку массив пуст.
python
arrays
dynamic-arrays
user299648
источник
источник
a = [obj] * N
- это то, что один и тот же объект obj появляется в каждом элементе массива. Если это изменяемый объект, и вы измените один элемент, все будет изменено. ... Но для этого примера с использованием целых чисел (или любого другого неизменяемого типа) это не имеет значения. Или, если вы просто присваиваете элементы, это тоже не проблема. (Я упоминаю об этом, потому что я делал именно это слишком часто :))Вы не можете делать в Python именно то, что хотите (если я правильно вас прочитал). Вам нужно ввести значения для каждого элемента списка (или, как вы его назвали, массива).
Но попробуйте это:
Для списков других типов используйте что-то помимо 0.
None
Часто также хороший выбор.источник
range(N)
уже создаст список, если Python <3.0.xrange(N)
Python 2.x. Однако я не уверен, насколько это граничит с неправильным. Я предпочитаю это,a = range(N)
потому что каждый элемент начинается с разумного «значения по умолчанию». Думаю, это вопрос мнения.Вы можете использовать numpy:
Пример из пустого массива :
источник
Просто объявите список и добавьте каждый элемент. Например:
источник
также вы можете расширить это с помощью метода расширения списка.
источник
Если вы (или другие искатели этого вопроса) на самом деле были заинтересованы в создании непрерывного массива для заполнения с целыми числами, рассмотрит ByteArray и memoryivew :
источник
источник
Если вам действительно нужен массив в стиле C
Обратите внимание, что в python нет концепции неинициализированной переменной. Переменная - это имя, привязанное к значению, поэтому это значение должно что-то иметь. В приведенном выше примере массив инициализируется нулями.
Однако в python это нечасто, если только вам это не нужно для низкоуровневых вещей. В большинстве случаев вам лучше использовать пустой список или пустой массив numpy, как предлагают другие ответы.
источник