Массивы в Python: создание, манипуляция и продвинутые операции — экспертное руководство
Что такое массив в Python?
Массив Python — однородная коллекция элементов, хранящихся в непрерывной памяти, обеспечивающая эффективное хранение и более быстрые числовые операции по сравнению со списками. Встроенный модуль array отвечает за создание и манипуляцию массивами.
Когда использовать массивы Python
Массивы идеальны, когда нужно хранить много значений одного типа и выполнять числовые вычисления. Они потребляют меньше памяти и дают быстрейший доступ, чем списки, особенно для больших наборов данных.
Синтаксис создания массива
Импортируйте модуль array и вызовите array.array(typecode, initializer):
import array
my_array = array.array('i', [1, 2, 3])
Коды типов массивов
| Код типа | Тип Python | Тип C | Мин. размер (байт) |
|---|---|---|---|
| 'u' | Unicode символ | Py_UNICODE | 2 |
| 'b' | Int | Signed char | 1 |
| 'B' | Int | Unsigned char | 1 |
| 'h' | Int | Signed short | 2 |
| 'l' | Int | Signed long | 4 |
| 'L' | Int | Unsigned long | 4 |
| 'q' | Int | Signed long long | 8 |
| 'Q' | Int | Unsigned long long | 8 |
| 'H' | Int | Unsigned short | 2 |
| 'f' | Float | Float | 4 |
| 'd' | Float | Double | 8 |
| 'i' | Int | Signed int | 2 |
| 'I' | Int | Unsigned int | 2 |
Доступ к элементам
Элементы доступны по нулевой индексации:
import array
balance = array.array('i', [300, 200, 100])
print(balance[1]) # 200
Также поддерживаются отрицательные индексы и срезы:
import array
arr = array.array('q', [3, 9, 6, 5, 20, 13, 19, 22, 30, 25])
print(arr[1:4]) # array('q', [9, 6, 5])
print(arr[7:10]) # array('q', [22, 30, 25])
Вставка элементов
Вставьте значение в конкретную позицию с insert(index, value):
import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance) # array('i', [300, 200, 150, 100])
Изменение элементов
Массивы изменяемы; присвойте новое значение напрямую:
import array
arr = array.array('b', [3, 6, 4, 8, 10])
arr[0] = 99
print(arr) # array('b', [99, 6, 4, 8, 10])
Конкатенация также поддерживается:
import array
first = array.array('b', [4, 6, 8])
second = array.array('b', [9, 12, 15])
combined = first + second
print(combined) # array('b', [4, 6, 8, 9, 12, 15])
Удаление элементов
Pop удаляет элемент по индексу:
import array
arr = array.array('b', [20, 25, 30])
arr.pop(2)
print(arr) # array('b', [20, 25])
Del удаляет элемент по позиции:
import array
arr = array.array('b', [10, 4, 5, 5, 7])
del arr[4]
print(arr) # array('b', [10, 4, 5, 5])
Remove удаляет первое вхождение значения:
import array
arr = array.array('b', [2, 3, 4])
arr.remove(3)
print(arr) # array('b', [2, 4])
Поиск и индексация
Найдите индекс значения с index(value):
import array
arr = array.array('b', [2, 3, 4, 5, 6])
print(arr.index(3)) # 1
Реверс массива
Разворот на месте:
import array
arr = array.array('b', [1, 2, 3])
arr.reverse()
print(arr) # array('b', [3, 2, 1])
Преобразование в Unicode
Только массивы типа 'u' поддерживают tounicode():
from array import array
p = array('u', [u'\u0050', u'\u0059', u'\u0054', u'\u0048', u'\u004F', u'\u004E'])
print(p) # array('u', 'PYTHON')
print(p.tounicode()) # PYTHON
Подсчёт элементов
Подсчёт вхождений с count(x):
import array
arr = array.array('b', [2, 3, 5, 4, 3, 3, 3])
print(arr.count(3)) # 4
Обход массива
Итерация через for-цикл:
import array
arr = array.array('i', [300, 200, 100])
for x in arr:
print(x)
Резюме
- Массив Python хранит элементы одного типа, заданного кодом типа.
- Создаются через модуль
arrayи эффективнее по памяти, чем списки. - Используйте индексацию, срезы и встроенные методы (
insert,remove,pop,reverse) для манипуляций. - Поддерживают конкатенацию, подсчёт и поиск.
- Только массивы
'u'можно преобразовать в Unicode-строки.
Python
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры
- Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Python timeit(): измерение времени выполнения с практическими примерами
- Понимание type() и isinstance() в Python: практические примеры