Масив числових значень 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 підписаний знак інт 1
B беззнаковий знак інт 1
u Py_UNICODE Юнікод 2
h підписаний короткий інт 2
H неподписаний короткий інт 2
i підписаний міжнар інт 2
I без підпису int інт 2
l підписано довго інт 4
L без підпису довгий інт 4
f плавати плавати 4
d подвійний плавати 8

Ми не будемо обговорювати різні типи С у цій статті. У цій статті ми використовуватимемо два типи кодів: 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)

Вихідні дані

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

Видалення елементів масиву Python

Ми можемо видалити один або кілька елементів з масиву, використовуючи оператор del Python.

 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 (число) # Помилка: масив не визначений 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 може знадобитися модуль масиву), використання модуля масиву не рекомендується.

Цікаві статті...