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

Перевод параграфа 3.6 Data Structures из книги Intermediate Pythonopen in new window.

Python содержит встроенные типы данных: списки, кортежи, словари.

Списки

Чтобы создать список используйте квадратные скобки или функцию list():

my_list1 = [] # Пустой список
my_list2 = list() # Пустой список
1
2

Список сохраняет порядок элементов с которым создаётся или в котором элементы добавляются. Списки являются последовательностями и поддерживают доступ к элементам по индексу, другие свойства последовательностей будут описаны в следующих главах.

Первый элемент списка находится под индексом 0, последний — на единицу меньше длины списка.

>>> name = ["obi", "ike", "nwosu"]
>>> name[0]
'obi'
>>> name[1]
'ike'
>>> name[2]
'nwosu'
1
2
3
4
5
6
7

Метод append() добавляет элемент в список.

>>> name = ["obi", "ike", "nwosu"]
>>> name.append("nkem")
>>> names
["obi", "ike", "nwosu", "nkem"]
1
2
3
4

Метод insert() добавляет элемент в любое место списка.

>>> name = ["obi", "ike", "nwosu"]
>>> name.insert(1, "nkem")
>>> names
["obi", "nkem", "ike", "nwosu"]
1
2
3
4

Оператор + объединяет два и более списка.

>>> name = ["obi", "ike", "nwosu"]
>>> name1 = ["James"]
>>> name + name1
["obi", "ike", "nwosu", "James"]
1
2
3
4

Для просмотра всех методов списка запустите команду help(list).

Кортежи

Кортеж тоже является последовательностью и создается элементами разделёнными запятыми:

>>> companies = "Google", "Microsoft", "Tesla"
>>> companies
('Google', 'Microsoft', 'Tesla')
1
2
3

При определении непустого кортежа скобки не обязательны, но они становятся обязательными когда кортеж является частью большего выражения. Пустой кортеж создаётся пустой парой скобок:

>>> companies = ()
>>> type(companies)
<class 'tuple'>
1
2
3

При определении кортежа с одним элементом запятая за ним обязательна.

>>> company = "Google",
>>> type(company)
<class 'tuple'>

>>> company = ("Google",)
>>> type(company)
<class 'tuple'>
1
2
3
4
5
6
7

Пропуск запятой означает что задано обычное значение, не кортеж.

>>> company = ("Google")
>>> company
'Google'

>>> type(company)
<class 'str'>
1
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
1
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'])
1
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'}
1
2
3
4
5
6
7
8
9
10
11
12
13

Словари

Словарь в Python похож на ассоциативный массив или хеш-таблицу в других языках. Словари индексируются по неизменяемому ключу. Для создания словаря используются фигурные скобки {} или функция dict(). Словарь — неупорядоченное множество пар ключ-значение в которых ключ уникален. Пример инициализации словаря:

ages = {"obi": 24,
"nkem": 23,
"Chris": 23
}
1
2
3
4

Основные операции словаря это сохранение значения по ключу и доступ к значению по ключу. Доступ к значению осуществляется через квадратные скобки:

>>> ages["obi"]
24
1
2

Словари изменяемы: значения связанные с ключами могут менятся, добавлятся и удалятся.

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

Используйте функцию help с параметром в виде названия типа данных для детального изучения типа.

help(list)
help(tuple)
help(set)
help(dict)
1
2
3
4
Последниее изменение: 24.08.2023, 06:42:55