Exam26


Project maintained by K3rnys Hosted on GitHub Pages — Theme by mattgraham

← Назад

Коллекции

Пришло время немного поговорить о коллекциях в питоне, основных 5, их и рассмотрим

list, set, dict, tuple, str

Списки

Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться)

Создать список создается при помощи функции list(), в которую можно передать любой итерируемый объект, например, строку, или range()

list('список')
Вывод: ['с', 'п', 'и', 'с', 'о', 'к']

Список можно создать и при помощи литерала:

s = []  # Пустой список
l = ['s', 'p', ['isok'], 2]
> s
Вывод: []
> l
Вывод: ['s', 'p', ['isok'], 2]

Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего

И еще один способ создать список - это генераторы списков. Генератор списков - способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for:

c = [c * 3 for c in 'list']
> c
['lll', 'iii', 'sss', 'ttt']

Возможна и более сложная конструкция генератора списков:

c = [c * 3 for c in 'list' if c != 'i']
> c
['lll', 'sss', 'ttt']
c = [c + d for c in 'list' if c != 'i' for d in 'spam' if d != 'a']
> c
['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']

Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков

Рассмотрим методы (то, что в квадратных скобочках, писать не обязательно, это просто как дополнение):

P.S. А еще к спискам применимы срезы, удобно использовать вместо pop

Множества

Словари

Словари в 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)
> 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'

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

Рассмотрим методы:

Кортежи

Строки

Потом напишу ок да