Тема 2

Переменные и типы данных: список, кортеж, словарь, множество

Переменные и типы данных

Продолжая разговор о переменных и типах данных, стоит разобрать и более сложные структуры, с которыми можно работать с помощью Python – списки, кортежи, словари и множества. 

 

·         Списки

Список – это тип данных, позволяющий содержать более простые значения “в одном контейнере”. Список (list) дает возможность взять, например, несколько строк и собрать их в едином контейнере. Списочный тип данных присваивается переменной с использованием квадратных скобок при ее инициализации.

 

weather = [25, 23, 20, 29]
type(weather)
> list

 

Если попробовать вывести на экран значение переменной со списочным типом данных, то отображаться будет весь список так, как он был изначально создан.

 

weather
> [25, 23, 20, 29]

 

Для обращения к отдельным элементам внутри списка и работы с ними используются индексы. Индекс – это адрес элемента внутри списка, в Python он обозначается числовым значением. При этом индексация элементов внутри списка начинается с нуля.

 

print(weather[0])
print(weather[3])
> 25
> 29

 

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

 

len(weather)
> 4

 

Значения элементов внутри уже созданных списков можно изменять с помощью обращения к ним через индекс. При этом пользователь будет получать ошибку IndexError, если попытается обратиться к элементу с индексом, выходящим за рамки длины списка.

 

weather[0] = 26
weather
> [26, 23, 20, 29]

 

Язык Python предлагает множество методов для работы со списками. Например, для добавления элемента в конец списка используется метод append(), для вставки элемента по индексу – insert(), а для получения индекса элемента с требующимся значением – метод index().
Для применения метода к списку необходимо указать наименование переменной, затем через “.” вызвать метод и указать для него аргумент в скобках.

 

weather.append(31)
weather
> [26, 23, 20, 29, 31]

 

weather.insert(1, 24) # первый аргумент — индекс, второй — значение
weather
> [26, 24, 23, 20, 29, 31]

 

weather.append(24)
print(weather)
weather.index(24) # возвращает индекс первого элемента со значением 24
> [26, 24, 23, 20, 29, 31, 24]
> 1

 

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

 

weather.append(’29’)
weather
> [26, 24, 23, 20, 29, 31, 24, ’29’]

 

·         Кортежи

Другой тип данных, довольно похожий на списки – это кортежи. Кортеж (tuple) отличается тем, что является статичной структурой, в него нельзя добавить элемент, как нельзя убрать или изменить уже заданные. Создаются кортежи похожим на списки образом, но с круглыми скобками вместо квадратных.

 

weather = (25, 23, 20, 29)
type(weather)
> tuple

 

При выведении на экран переменной, которая содержит кортеж, он будет отображаться целиком. Но можно обращаться и к отдельным элементам внутри кортежа – по соответствующим индексам. 

 

weather
> (25, 23, 20, 29)

 

print(weather[0])
print(weather[3])
> 25
> 29

 

Кортежи поддерживают все операции над списками, не изменяющие список, то есть сложение, умножение на число, методы index() и count() и некоторые другие операции.
Кортеж полезен тем, что он защищен от изменений, как намеренных, так и случайных. Кроме того, кортеж обладает меньшим размером, чем список, и не требует столько памяти, сколько требуется для работы со списками. 

 

a = (1, 2, 3, 4, 5, 6)
b = [1, 2, 3, 4, 5, 6]
a.__sizeof__() # возвращает размер объекта в байтах
> 72

 

b.__sizeof__()
> 88

 

·         Словари

Словарь (dict) – еще одна составная структура для работы с переменными в Python. Используется он для хранения значений в паре с ключами. Словарь создается через фигурные скобки, внутри которых через двоеточие задаются пары ключ-значение. 

 

weather = {
    ‘Понедельник’: 25,
    ‘Вторник’: 23,
    ‘Среда’: 20,
    ‘Четверг’: 29
}
type(weather)
> dict

 

weather
> {‘Понедельник’: 25, ‘Вторник’: 23, ‘Среда’: 20, ‘Четверг’: 29
}

 

К элементам словаря можно обращаться по ключу. Ключ служит идентификатором для соответствующего ему значения.

 

weather[‘Понедельник’]
> 25

 

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

 

weather[123] = 456
weather
> {‘Понедельник’: 26, ‘Вторник’: 23, ‘Среда’: 20, ‘Четверг’: 29, 123: 456}

 

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

 

weather[[1, 2, 3]] = ‘list’
> TypeError

 

У словарей также есть множество полезных методов. Метод values() позволяет получить все значения из словаря, а keys() – все ключи данного словаря. Можно получать из словарей и пары ключ-значение целиком, для этого используется метод items(). 

 

for item in weather.values():
  print(item)
> 26
23
20
29
456
tuple

 

for item in weather.keys():
  print(item)
> Понедельник

Вторник

Среда

Четверг

123
(1, 2, 3)

 

for k, v in weather.items():
  print(f'{k}: {v}’)
> Понедельник
: 26
Вторник
: 23
Среда
: 20
Четверг
: 29
123: 456
(1, 2, 3): tuple

 

·         Множества

Множества в Python – это наборы элементов, между которыми не установлены отношения порядка. Создаются множества (set или frozenset) с помощью фигурных скобок и простого перечисления элементов внутри них при инициализации переменных.

 

set_1 = {‘a’, ‘b’, ‘c’, ‘d’}
set_1
> {‘a’, ‘b’, ‘c’, ‘d’}

 

Повторяющиеся элементы внутри множества удаляются, а множества с одинаковыми элементами внутри совпадают, даже если изначально были заданы по-разному. 

 

set_2 = {‘a’, ‘b’, ‘c’, ‘d’, ‘a’, ‘b’, ‘a’}
set_2
> {‘a’, ‘b’, ‘c’, ‘d’}
set_1 == set_2
> True

 

Множества удобно использовать для удаления повторяющихся элементов. Для этого можно перевести переменную из списочного типа данных во множества встроенной функцией set(). 

 

letters = [‘a’, ‘b’, ‘c’, ‘d’, ‘a’, ‘b’, ‘a’]
letters = set(letters)
letters
> {‘a’, ‘b’, ‘c’, ‘d’}

 

В Python также можно задавать неизменяемые множества, которые по своим свойствам будут похожи на кортежи. 

 

set_3 = frozenset([‘a’, ‘b’, ‘c’, ‘d’, ‘a’, ‘b’, ‘a’])
set_3
> frozenset({‘a’, ‘b’, ‘c’, ‘d’})

 

set_3.add(‘e’)
> AttributeError

Прокрутить вверх