Списки, словари и кортежи

Одно значение мы легко можем хранить в переменной. Но когда у нас есть последовательность значений? Не будем же мы использовать несколько переменных… Для этих целей в Python есть Списки, Словари и Кортежи.

Списки

Это те же массивы, но в Python их называют списками. Список заключен в квадратные скобки и выглядит, как значения перечисленные через запятую. Это могут быть строковые значения, могут быть числовые. Например:

>>> a = [1, 2, 3, 4, 5]

или

>>> b = ['One', 'Two', 'Three', 'Four', 'Five']

Нумерация значений в списке начинается с 0. Поэтому, если мы хотим вывести ‘Three’, то напишем:

>>> print(b[2])

Чтобы добавить значение в список, можно использовать append():

>>> b.append('Six')

Теперь список b выглядит вот так:

>>> b
['One', 'Two', 'Three', 'Four', 'Five', 'Six']

Обратиться к элементу можно так же отрицательным индексом:

>>> print(b[-1])

Получим ‘Six’

Списки можно сортировать с помощью sort()

>>> a = [4, 8, 3, 9, 2]
>>> a.sort()
>>> print(a)

[2, 3, 4, 8, 9]

Вообще объявить пустой список можно так:

>>> a = []

Словари

Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами. Чтобы работать со словарём, его нужно создать. Создать его можно несколькими способами.

Во-первых, с помощью литерала:
>>> d = {}
>>> d
{}
>>> d = {'dict': 1, 'dictionary': 2}
>>> d
{'dict': 1, 'dictionary': 2}

Во-вторых, с помощью функции dict:
>>> d = dict(short='dict', long='dictionary')
>>> d
{'short': 'dict', 'long': 'dictionary'}
>>> d = dict([(1, 1), (2, 4)])
>>> d
{1: 1, 2: 4}

В-третьих, с помощью метода fromkeys:
>>> d = dict.fromkeys(['a', 'b'])
>>> d
{'a': None, 'b': None}
>>> d = dict.fromkeys(['a', 'b'], 100)
57
>>> d
{'a': 100, 'b': 100}

В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы
списков:
>>> d = {a: a ** 2 for a in range(7)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}

Теперь попробуем добавить записей в словарь и извлечь значения ключей:
>>> d = {1: 2, 2: 4, 3: 9}
>>> d[1]
2
>>> d[4] = 4 ** 2
>>> d
{1: 2, 2: 4, 3: 9, 4: 16}
>>> d['1']
Traceback (most recent call last):
File "", line 1, in
d['1']
KeyError: '1'

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

Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.

Методы словарей

dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари не упорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.

Кортежи

Если есть списки, то зачем кортежи? Первое — они неизменны, защита от ошибочных изменений, второе — они меньше.

Создать пустой кортеж можно с помощью литерала кортежа или с помощью функции tuple()

>>> a = ()

или

>>> a = tuple()

А вот добавить кортеж так a = (‘Hello’) — НЕЛЬЗЯ! Получим переменную 🙂 Надо писать так:

>>> a = ('Hello', )
>>> a
('H', 'e', 'l', 'l', 'o')


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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

UNLIX © 2019

При копировании материалов ОБЯЗАТЕЛЬНО указывать актуальную ссылку на сайт.