Массивы в Python — это структуры данных, которые могут содержать несколько значений одного типа. Часто их ошибочно принимают за списки или массивы Numpy. Технически массивы в Python отличаются от них обоих. Итак, давайте посмотрим, что такое массивы в Python и как их реализовать.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Содержание
- Зачем использовать массивы в Python?
- Что такое массив в Python?
- Можно ли считать список Python аналогом массива?
- Создание массива в Python
- Получение элемента массива
- Основные операции с массивами:
Зачем использовать массивы в Python?
Использование массивов в Python может сэкономить вам много времени. Они помогают уменьшить общий размер кода, а Python помогает избавиться от проблемного синтаксиса, в отличие от других языков.
Например, если вам нужно хранить целые числа от 1 до 100, вы не сможете явно запомнить 100 имен переменных. Но вы можете легко сохранить их, используя массив.
Теперь, когда мы кратко рассказали о важности массивов в Python, давайте рассмотрим их более подробно.
Что собой представляют массивы в Python?
Массив — это, по сути, структура данных, которая может содержать в себе более одного значения одновременно. Это набор или упорядоченный ряд элементов одного типа.
Пример:
a = arr.array('d', [1.2,1.3,2.3])
Мы можем легко пройтись по элементам массива и получить необходимые значения, просто указав номер индекса. Массивы также являются изменяемыми структурами, поэтому по мере необходимости с ними можно производить различные манипуляции.
А теперь обсудим вопрос, который первым приходит в голову.
Можно ли считать список Python аналогом массива?
Массивы и списки Python хранят значения схожим образом. Но между ними есть одно ключевое различие. Оно заключено в том, что они хранят. Список может хранить в себе одновременно значения многих разных типов: строки, целые числа, числа с плавающей точкой и так далее. А вот массив может хранить значения только одного типа. То есть мы можем создать массив строк, массив целых чисел и так далее, но в одном массиве может храниться только один тип данных.
В Python также весьма популярны массивы библиотеки Numpy, которые широко используются в Data Science.
Создание массива в Python
Массивы в Python могут быть созданы после импорта модуля array
. Импорт можно сделать следующим образом:
import array as arr
Функция array(data type, value list)
принимает два параметра. Первый определяет тип данных сохраняемых значений, а второй – непосредственно сам список значений. Тип данных может быть любым, например, int, float, double и т. д. Пожалуйста, обратите внимание, что слово arr
является псевдонимом и предназначено для простоты использования. Разумеется, также можно импортировать данный модуль и без псевдонима. Вот еще один возможный вариант импорта модуля array
:
from array import *
Это означает, что мы импортировали все функции из модуля array
.
Если мы импортировали array
первым способом (с псевдонимом), для создания массива используется следующий синтаксис:
a = arr.array(data type,value list)
А при импорте всех функций синтаксис будет такой:
a = array(data type,value list)
Пример:
a = arr.array( ‘d’ , [1.1 , 2.1 ,3.1])
Здесь параметр 'd'
отвечает за тип данных float, а значения массива передаются в следующем параметре функции.
Замечание: Все значения имеют тип float. Мы не можем в одном массиве задавать значения разных типов.
В следующей таблице показаны способы кодирования различных типов данных:
Код типа данных | Тип данных Python | Размер в байтах |
---|---|---|
i | int | 2 |
I | int | 2 |
u | unicode character | 2 |
h | int | 2 |
H | int | 2 |
l | int | 4 |
L | int | 4 |
f | float | 4 |
d | float | 8 |
Получение элемента массива
Чтобы получить доступ к определенному элементу массива, вам нужно указать его индекс. Заметим, что индексация начинается с 0, а не с 1. Следовательно, индекс последнего элемента массива всегда на 1 меньше длины массива.
Синтаксис имеет следующий вид:
array_name[index]
Пример использования:
a = arr.array('d', [1.1 , 2.1 ,3.1]) a[1] Результат: 2.1
Полученный результат – это значение массива под индексом 1 (второе по счету). Оно равно 2.1.
Основные операции с массивами
Нахождение длины массива
Длина массива — это количество элементов, реально присутствующих в нем. Чтобы узнать эту величину, можно использовать функцию len()
. Эта функция возвращает целое значение, которое равно количеству элементов в данном массиве.
Синтаксис: len(array_name)
Пример использования:
a = arr.array('d', [1.1 , 2.1 ,3.1]) len(a) # Результат: # 3
Было возвращено значение 3, которое соответствует количеству элементов данного массива.
Добавление элементов в массив
Мы можем добавлять элементы в массив при помощи функций append()
, extend()
и insert()
.
Функция append()
используется, когда нам необходимо добавить единичный элемент в конец массива.
Пример использования:
a = arr.array('d', [1.1, 2.1, 3.1] ) a.append(3.4) print(a) # Результат: # array(‘d’, [1.1, 2.1, 3.1, 3.4])
Результат представляет собой исходный массив с добавленным в его конец значением, которое было передано в функцию append()
. Если необходимо добавить в массив более одного элемента, используется функция extend()
. Она принимает в качестве параметра список элементов и добавляет их все в конец исходного массива.
Пример использования:
a = arr.array('d', [1.1, 2.1, 3.1]) a.extend([4.5,6.3,6.8]) print(a) # Результат: # array(‘d’, [1.1, 2.1, 3.1, 4.5, 6.3, 6.8])
В полученном массиве все три элемента были добавлены в конец исходного массива.
Но бывают ситуации, когда вам необходимо добавить элемент на определенную позицию массива. Для этого используется функция insert()
. Эта функция вставляет элемент по соответствующему индексу в массиве. Она принимает 2 параметра, где первый — это индекс, в который нужно вставить элемент, а второй — само значение вставляемого элемента.
Пример использования:
a = arr.array('d', [1.1, 2.1, 3.1] ) a.insert(2,3.8) print(a) # Результат: # array(‘d’, [1.1, 2.1, 3.8, 3.1])
Полученный в результате массив содержит в себе значение 3.8 по индексу 2 (третье значение массива).
Массивы также можно соединять с друг другом, эта операция называется конкатенацией.
Конкатенация массивов
При помощи оператора + два массива можно соединить друг с другом.
Пример использования:
a = arr.array('d',[1.1, 2.1, 3.1, 2.6, 7.8]) b = arr.array('d',[3.7, 8.6]) c = arr.array('d') c = a + b print("Array c = ", c) # Результат: # Array c= array(‘d’, [1.1, 2.1, 3.1, 2.6, 7.8, 3.7, 8.6])
Полученный в результате массив объединяет массивы а
и b
.
Теперь давайте разберем, как можно удалять элементы из массива.
Удаление элементов массива
Удаление элементов массива можно осуществлять при помощи функций pop()
и remove()
. Разница между этими двумя функциями заключается в том, что первая возвращает удаленное значение, а вторая — нет.
Функция pop()
может вызываться без параметров либо принимать в качестве параметра целое значение индекса массива. Если эта функция вызывается без параметра, то по умолчанию она возвращает последний элемент массива и удаляет его. Когда мы в явном виде задаем индекс массива, то все это она делает с элементом, находящимся по данному индексу.
Пример использования:
a = arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6]) print(a.pop()) print(a.pop(3)) # Результат: # 4.6 # 3.1
Первая функция pop()
, вызванная без параметра, удалила последнее значение, которое мы вывели в консоль при помощи функции print()
. Вторая же функция удалила значение по индексу 3, которое мы также вывели на экран.
Функция remove()
используется для удаления значений массива тогда, когда их возвращение и вывод не требуется. Данная функция принимает в качестве параметра само значение, которое необходимо удалить. Если ей передать индекс, то будет выдана ошибка.
Пример использования:
a = arr.array('d',[1.1, 2.1, 3.1]) a.remove(1.1) print(a) # Результат: # array(‘d’, [2.1, 3.1])
Полученный в результате массив содержит все элементы исходного массива кроме значения 1.1.
Когда необходимо получить определенный диапазон элементов массива (взятый по его индексам), то для этого можно использовать срезы.
Срезы массива
Для задания срезов массива используется символ :
. Таким образом возвращается диапазон элементов, который мы обозначили по их индексам.
Примечание редакции: подробнее о срезах читайте в статье “Срез массива в Python”.
Пример использования:
a = arr.array('d',[1.1, 2.1, 3.1, 2.6, 7.8]) print(a[0:3]) # Результат: # array(‘d’, [1.1, 2.1, 3.1])
В результате были выведены элементы под индексами 0, 1 и 2, которые находятся соответственно на 1, 2 и третьей позиции в исходном массиве.
Итерация по массиву
При помощи цикла for
мы можем произвести итерацию по массиву.
Пример использования:
a = arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6]) print("All values") for x in a: print(x) print("specific values") for x in a[1:3]: print(x)
Результат:
All values 1.1 2.2 3.8 3.1 3.7 1.2 4.6 specific values 2.2 3.8
Когда мы используем цикл for
без каких-либо конкретных параметров, результат содержит все элементы массива, перечисленные по порядку. Результат работы второго цикла for
содержит только те элементы, которые указаны при помощи среза. Обратите внимание, что результат не содержит значение под индексом 3.
Перевод статьи Wajiha Urooj “Arrays in Python – What are Python Arrays and how to use them?”
Пингбэк: Представление списков и генераторное выражение в Python - pythonturbo
зИ
оИр
ц