Разница между массивами и списками в Python

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

В частности, вы узнаете, чем список в Python отличается от массива и массива NumPy. Вы получите четкое понимание о том, когда использовать ту или иную структуру данных.

К концу этого урока вы научитесь:

  • Чем списки и массивы Python похожи и чем они отличаются

  • Когда использовать список Python над массивом

  • Когда использовать массив вместо списка в Python

Оглавление

Что такое список Python

Список в Python (Python list) является встроенной структурой данных, которая может содержать коллекцию элементов. У них есть ряд уникальных свойств, которые отличают их от других структур данных. В частности, списки в Python являются:

  • Упорядоченный — означает, что элементы, которые он содержит, расположены в определенном порядке, позволяя вам получать доступ к элементам по их позициям

  • Изменяемый – означает, что элементы могут быть добавлены или удалены

  • Дублированный – означает, что элементы могут появляться в списке более одного раза

  • Гетерогенный – означает, что элементы могут быть различных типов данных, таких как строки, целые числа и даже другие списки

Python списки создаются с использованием квадратных скобок, []. Давайте создадим список, содержащий несколько чисел:

# Creating a Python list is easy!
numbers = [1,2,3,4,5]

В следующем разделе вы узнаете о массивах в Python.

Что такое массив Python

Python включает в себя встроенный модуль array, который можно использовать для создания массивов в Python. Хотя массивы сохраняют большинство характеристик списков Python, они не могут хранить элементы разных типов данных. Однако они могут содержать дубликаты, являются упорядоченными и изменяемыми.

Для создания массива сначала необходимо его объявить. Обычно это делается путем передачи другой структуры коллекции, например, списка. При объявлении массива сначала нужно указать тип данных, а затем элементы, которые мы хотим хранить.

Давайте воссоздадим предыдущий массив:

# Creating an array in Python
import array

numbers = array.array('i', [1,2,3,4,5])
print(numbers)

# Returns:
# array('i', [1, 2, 3, 4, 5])

Что такое массив NumPy

Один из типов массивов, с которым вы, вероятно, будете сталкиваться чаще, по сравнению с массивом из библиотеки array, - это массив NumPy. Массив NumPy часто используется для численных расчетов. Тем не менее, он гораздо более похож на список Python. Фактически, он обладает всеми свойствами списка Python (включая хранение данных разных типов). Поскольку NumPy предназначен для использования в численных расчетах, он также содержит множество различных методов и функций для поддержки этого.

Давайте посмотрим, как мы можем создать массив NumPy, содержащий те же элементы, что и наш изначальный список:

# Creating a NumPy Array
import numpy as np

numbers = np.array([1,2,3,4,5])
print(numbers)

# Returns:
# [1 2 3 4 5]

Подобно массиву из библиотеки array, нам нужно объявить массив NumPy. Однако, поскольку эти массивы могут содержать данные разных типов, нам не нужно заранее объявлять тип данных.

Сравнение списка Python и массива

В этом разделе мы сравним список в Python, массив и массив NumPy:

Список Python
Массив NumPy
Array.array

гетерогенный

гетерогенный

Однородный

Встроенный

Необходимо установить и импортировать

Необходимо импортировать

Нет необходимости декларировать

Нет необходимости декларировать

Нет необходимости декларировать

Списки могут быть вложены внутри любой длины.

Вложенные массивы должны быть одинаковыми по размеру.

Вложенные массивы должны быть одинаковыми по размеру.

Невозможно применить математические операции непосредственно к нему.

Можно применять математические операции непосредственно к нему.

Можно применять математические операции непосредственно к нему.

Когда использовать список поверх массива в Python

Выбирайте список в Python вместо массива, когда вам нужно хранить небольшой набор элементов, с которыми не предполагается выполнять математические операции. Благодаря простоте создания и изменения, списки в Python отлично подходят для таких задач.

Однако, если вы хотите выполнять математические операции, работа становится немного сложнее. Допустим, мы хотели бы добавить 5 к нашему исходному списку numbers. Для этого нам потребуется использовать либо цикл for, либо генератор списка, чтобы добавить значение к каждому элементу.

Давайте посмотрим, как это выглядит:

# Adding Values to List Items
numbers = [1,2,3,4,5]
new_numbers = []
for number in numbers:
    new_numbers.append(number + 5)

print(new_numbers)

# Returns:
# [6, 7, 8, 9, 10]

Когда использовать массив вместо списка в Python

Вы должны выбрать массив вместо списка в Python, если знаете, что вам потребуется выполнять математические операции с ним. Аналогично, если вам нужно хранить сложные данные одинаковой структуры (например, матрицы), это может быть более эффективным с точки зрения использования памяти процессом.

Давайте посмотрим, насколько легко можно воспроизвести наш ранний пример, используя массив NumPy:

# Adding Values to Array Items
import numpy as np
numbers = np.array([1,2,3,4,5])
numbers += 5

print(numbers)

# Returns:
# [ 6  7  8  9 10]

Заключение

В этом учебном пособии вы узнали различия между списками в Python и двумя типами массивов, доступных в Python: библиотекой array и библиотекой NumPy. Затем вы узнали, чем они похожи и чем отличаются. Наконец, вы узнали, когда использовать каждый из вариантов, с учетом различных сценариев использования.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

Last updated