Списками и массивами Python

Чем отличаются списки от массивов в 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!»


Добавить комментарий