Массив числовых значений Python

В этом руководстве вы узнаете о модуле массива Python, разнице между массивами и списками, а также о том, как и когда их использовать с помощью примеров.

Примечание. Когда люди говорят о массивах в Python, чаще всего имеют в виду списки Python . Если это так, посетите руководство по списку Python.

В этом руководстве мы сосредоточимся на модуле с именем array. arrayМодуль позволяет хранить коллекцию числовых значений.

Создание массивов Python

Чтобы создать массив числовых значений, нам нужно импортировать arrayмодуль. Например:

 import array as arr a = arr.array('d', (1.1, 3.5, 4.5)) print(a)

Вывод

 массив ('d', (1.1, 3.5, 4.5))

Здесь мы создали массив floatтипа. Буква d- это код типа. Это определяет тип массива во время создания.

Обычно используемые коды типов перечислены ниже:

Код Тип C Тип Python Мин. Байты
b подписанный символ int 1
B беззнаковый символ int 1
u Py_UNICODE Unicode 2
h подписанный короткий int 2
H беззнаковый короткий int 2
i подписанный int int 2
I беззнаковое целое int 2
l подписан долго int 4
L беззнаковый длинный int 4
f плавать плавать 4
d двойной плавать 8

В этой статье мы не будем обсуждать различные типы C. Во всей статье мы будем использовать два кода типов: iдля целых чисел и dдля чисел с плавающей запятой.

Примечание . uТиповой код для символов Unicode устарел с версии 3.3. Избегайте использования как можно большего количества.

Доступ к элементам массива Python

Мы используем индексы для доступа к элементам массива:

 import array as arr a = arr.array('i', (2, 4, 6, 8)) print("First element:", a(0)) print("Second element:", a(1)) print("Last element:", a(-1))

Вывод

 Первый элемент: 2 Второй элемент: 4 Последний элемент: 8

Примечание . Индекс начинается с 0 (а не с 1), как в списках.

Нарезка массивов Python

Мы можем получить доступ к ряду элементов в массиве с помощью оператора среза :.

 import array as arr numbers_list = (2, 5, 62, 5, 42, 52, 48, 5) numbers_array = arr.array('i', numbers_list) print(numbers_array(2:5)) # 3rd to 5th print(numbers_array(:-5)) # beginning to 4th print(numbers_array(5:)) # 6th to end print(numbers_array(:)) # beginning to end

Вывод

 array ('i', (62, 5, 42)) array ('i', (2, 5, 62)) array ('i', (52, 48, 5)) array ('i', (2 , 5, 62, 5, 42, 52, 48, 5))

Изменение и добавление элементов

Массивы изменяемы; их элементы можно изменять аналогично спискам.

 import array as arr numbers = arr.array('i', (1, 2, 3, 5, 7, 10)) # changing first element numbers(0) = 0 print(numbers) # Output: array('i', (0, 2, 3, 5, 7, 10)) # changing 3rd to 5th element numbers(2:5) = arr.array('i', (4, 6, 8)) print(numbers) # Output: array('i', (0, 2, 4, 6, 8, 10))

Вывод

 array ('i', (0, 2, 3, 5, 7, 10)) array ('i', (0, 2, 4, 6, 8, 10))

Мы можем добавить один элемент в массив с помощью append()метода или добавить несколько элементов с помощью extend()метода.

 import array as arr numbers = arr.array('i', (1, 2, 3)) numbers.append(4) print(numbers) # Output: array('i', (1, 2, 3, 4)) # extend() appends iterable to the end of the array numbers.extend((5, 6, 7)) print(numbers) # Output: array('i', (1, 2, 3, 4, 5, 6, 7))

Вывод

 array ('i', (1, 2, 3, 4)) array ('i', (1, 2, 3, 4, 5, 6, 7))

Мы также можем объединить два массива с помощью +оператора.

 import array as arr odd = arr.array('i', (1, 3, 5)) even = arr.array('i', (2, 4, 6)) numbers = arr.array('i') # creating empty array of integer numbers = odd + even print(numbers)

Вывод

 массив ('я', (1, 3, 5, 2, 4, 6)) 

Удаление элементов массива Python

Мы можем удалить один или несколько элементов из массива, используя оператор Python del.

 import array as arr number = arr.array('i', (1, 2, 3, 3, 4)) del number(2) # removing third element print(number) # Output: array('i', (1, 2, 3, 4)) del number # deleting entire array print(number) # Error: array is not defined

Вывод

 array ('i', (1, 2, 3, 4)) Traceback (последний вызов последним): файл "", строка 9, в print (number) # Ошибка: массив не определен NameError: имя 'number' равно не определено

Мы можем использовать remove()метод для удаления данного элемента и pop()метод для удаления элемента по данному индексу.

 import array as arr numbers = arr.array('i', (10, 11, 12, 12, 13)) numbers.remove(12) print(numbers) # Output: array('i', (10, 11, 12, 13)) print(numbers.pop(2)) # Output: 12 print(numbers) # Output: array('i', (10, 11, 13))

Вывод

 array ('i', (10, 11, 12, 13)) 12 array ('i', (10, 11, 13))

Посетите эту страницу, чтобы узнать больше о массивах Python и методах массивов.

Списки Python против массивов

В Python мы можем рассматривать списки как массивы. Однако мы не можем ограничить тип элементов, хранящихся в списке. Например:

 # elements of different types a = (1, 3.5, "Hello") 

Если вы создаете массивы с помощью arrayмодуля, все элементы массива должны быть одного числового типа.

 import array as arr # Error a = arr.array('d', (1, 3.5, "Hello"))

Вывод

 Traceback (most recent call last): File "", line 3, in a = arr.array('d', (1, 3.5, "Hello")) TypeError: must be real number, not str

When to use arrays?

Lists are much more flexible than arrays. They can store elements of different data types including strings. And, if you need to do mathematical computation on arrays and matrices, you are much better off using something like NumPy.

So, what are the uses of arrays created from the Python array module?

The array.array type is just a thin wrapper on C arrays which provides space-efficient storage of basic C-style data types. If you need to allocate an array that you know will not change, then arrays can be faster and use less memory than lists.

Если вам действительно не нужны массивы (для взаимодействия с кодом C может потребоваться модуль массива), использование модуля массива не рекомендуется.

Интересные статьи...