В чем разница между списками и массивами в Python?
Чтобы понять, в чем заключается разница между списками и массивами в Python, нужно подумать о цели создания массивов — массивы были созданы для того, чтобы минимизировать ресурсы, затраченные на выполнение операций с элементами одного типа. Списки же можно использовать для объединения элементов как одного типа, так и разных типов. Например, если у Вас есть большое количество финансовых данных типа float, и Вам нужно осуществить расчеты с этими данными, то массивы — это верный выбор. А если необходимо соединить воедино строковые и числовые данные, либо небольшое количество данных одного типа (при этом расход памяти не имеет значения), — то списки будут оптимальным вариантом.
Таким образом, разница между списками и массивами в Python заключается в том, что:
1. В списках могут храниться элементы различных типов данных: например, список одновременно может включать числовые и строковые данные. В то время, как массивы хранят элементы одного и того же типа данных, например, только элементы типа int, либо только элементы типа float, при этом тип элементов указывается при создании массива:
Создание списка:
# списки могут содержать данные разных типов
lst = [1, 1.0, 'слово', (50, 50)]
print(lst)
Вывод на экран:
[1, 1.0, 'слово', (50, 50)]
Создание массива:
import array as arr
datas = arr.array('f', [1.1, 2.1, 1.089, 24.])
print(datas)
Вывод на экран:
array('f', [1.100000023841858, 2.0999999046325684, 1.0889999866485596, 24.0])
Обратите внимание, что для работы с массивами в Python, необходимо импортировать библиотеку array
. Кроме того, при создании массива нужно указывать, данные какого типа будут храниться в массиве. Так как созданный массив datas
хранит данные типа float
, то при создании массива мы указываем код типа 'f'
.
2. Благодаря тому, что тип элементов массива известен во время его создания, массивы занимают меньше памяти и более эффективны по сравнению со списками. Для того чтобы убедиться в верности этого замечания, создадим массив и список с одинаковым содержимым, после чего проверим, сколько памяти занимают эти объекты в памяти:
Сравним, сколько места занимают массив и список с одинаковыми элементами:
# Cоздадим массив
import array as arr
arr1 = arr.array('i', [0, 1, 2, 3, 4, 5])
# Cоздадим список
lst = [0, 1, 2, 3, 4, 5]
# Сравним, сколько места занимают массив и
# список с одинаковыми элементами
from pympler import asizeof
print('размер массива: ', asizeof.asizeof(arr1))
print('размер списка: ', asizeof.asizeof(lst))
Вывод на экран:
размер массива: 88 размер списка: 304
3. Списки встроены в Python, а массивы — нет. Поэтому для работы с массивами нужно импортировать модуль
array
.
В первом пункте мы уже обращали внимание на необходимость импорта библиотеки array
для создания массивов. Повторим процесс создания массива, но на этот раз массив будет содержать данные целочисленного типа int
:
import array as arr
ar = arr.array('i', [3, 14, 15])
print(ar)
Вывод на экран:
array('i', [3, 14, 15])
Подведем итог: когда лучше использовать массивы, а когда — списки?
в тех случаях, когда необходима работа с большим количеством однотипных данных, использование массивов позволит Вам сэкономить память и время на обработку данных. В остальных случаях можно использовать списки!
Если Вам предстоит серьезная работа с большими объемами массивов, рекомендую дополнительно ознакомиться с библиотекой
Рекомендация от автораNumPy
— эта библиотека позволит сотворить с массивами чудеса и облегчит жизнь Вам и Вашей машине!
У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»