Python. Структуры данных: список, кортеж, множество, словарь
Перевод параграфа 3.6 Data Structures из книги Intermediate Pythonopen in new window.
Python содержит встроенные типы данных: списки, кортежи, словари.
Списки
Чтобы создать список используйте квадратные скобки или функцию list()
:
my_list1 = [] # Пустой список
my_list2 = list() # Пустой список
2
Список сохраняет порядок элементов с которым создаётся или в котором элементы добавляются. Списки являются последовательностями и поддерживают доступ к элементам по индексу, другие свойства последовательностей будут описаны в следующих главах.
Первый элемент списка находится под индексом 0, последний — на единицу меньше длины списка.
>>> name = ["obi", "ike", "nwosu"]
>>> name[0]
'obi'
>>> name[1]
'ike'
>>> name[2]
'nwosu'
2
3
4
5
6
7
Метод append()
добавляет элемент в список.
>>> name = ["obi", "ike", "nwosu"]
>>> name.append("nkem")
>>> names
["obi", "ike", "nwosu", "nkem"]
2
3
4
Метод insert()
добавляет элемент в любое место списка.
>>> name = ["obi", "ike", "nwosu"]
>>> name.insert(1, "nkem")
>>> names
["obi", "nkem", "ike", "nwosu"]
2
3
4
Оператор +
объединяет два и более списка.
>>> name = ["obi", "ike", "nwosu"]
>>> name1 = ["James"]
>>> name + name1
["obi", "ike", "nwosu", "James"]
2
3
4
Для просмотра всех методов списка запустите команду help(list)
.
Кортежи
Кортеж тоже является последовательностью и создается элементами разделёнными запятыми:
>>> companies = "Google", "Microsoft", "Tesla"
>>> companies
('Google', 'Microsoft', 'Tesla')
2
3
При определении непустого кортежа скобки не обязательны, но они становятся обязательными когда кортеж является частью большего выражения. Пустой кортеж создаётся пустой парой скобок:
>>> companies = ()
>>> type(companies)
<class 'tuple'>
2
3
При определении кортежа с одним элементом запятая за ним обязательна.
>>> company = "Google",
>>> type(company)
<class 'tuple'>
>>> company = ("Google",)
>>> type(company)
<class 'tuple'>
2
3
4
5
6
7
Пропуск запятой означает что задано обычное значение, не кортеж.
>>> company = ("Google")
>>> company
'Google'
>>> type(company)
<class 'str'>
2
3
4
5
6
Кортежи индексируются как списки, но неизменямы.
>>> companies = ("Google", "Microsoft", "Palantir")
>>> companies[0]
'Google'
>>> companies[0] = "Boeing"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
2
3
4
5
6
7
В тоже время, если элементом кортежа является изменяемые объект, такой как список, то он может быть изменен.
>>> companies = (["lockheedMartin", "Boeing"], ["Google", "Microsoft"])
>>> companies
(['lockheedMartin', 'Boeing'], ['Google', 'Microsoft'])
>>> companies[0].append("SpaceX")
>>> companies
(['lockheedMartin', 'Boeing', 'SpaceX'], ['Google', 'Microsoft'])
2
3
4
5
6
Множества
Множества это неупорядоченные коллекции объектов не содержащие дубликатов. Пустое множество создаётся функцией set()
или фигурными скобками {}
. Множества неупорядоченны поэтому к элементам множества нельзя обратится по индексу. Множества, за исключением frozen set, изменяемы.
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> basket_set = set()
>>> basket_set
set()
>>> basket_set.update(basket)
>>> basket_set
{'pear', 'orange', 'apple', 'banana'}
>>> basket_set.add("clementine")
>>> basket_set
{'pear', 'orange', 'apple', 'banana', 'clementine'}
>>> basket_set.remove("apple")
>>> basket_set
{'pear', 'orange', 'banana', 'clementine'}
2
3
4
5
6
7
8
9
10
11
12
13
Словари
Словарь в Python похож на ассоциативный массив или хеш-таблицу в других языках. Словари индексируются по неизменяемому ключу. Для создания словаря используются фигурные скобки {}
или функция dict()
. Словарь — неупорядоченное множество пар ключ-значение в которых ключ уникален. Пример инициализации словаря:
ages = {"obi": 24,
"nkem": 23,
"Chris": 23
}
2
3
4
Основные операции словаря это сохранение значения по ключу и доступ к значению по ключу. Доступ к значению осуществляется через квадратные скобки:
>>> ages["obi"]
24
2
Словари изменяемы: значения связанные с ключами могут менятся, добавлятся и удалятся.
Структуры данных Python не ограничиваются приведёнными в этом разделе. Например, модуль collections
содержит очереди, деки и другие коллекции. В то же время структуры приведённые в этом разделе используются в большинстве приложений на Python.
Используйте функцию help с параметром в виде названия типа данных для детального изучения типа.
help(list)
help(tuple)
help(set)
help(dict)
2
3
4