У цьому посібнику ви дізнаєтесь про модуль масиву 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 може знадобитися модуль масиву), використання модуля масиву не рекомендується.