Пришло время немного поговорить о коллекциях в питоне, основных 5, их и рассмотрим
Списки в 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 для генерации списков
Рассмотрим методы (то, что в квадратных скобочках, писать не обязательно, это просто как дополнение):
list.append(x) — Добавляет элемент в конец спискаlist.extend(L) — Добавляет все элементы списка L в конецlist.insert(i, x) или c[i] = x — Вставка или изменение элемента по индексуlist.remove(x) — Удаляет первый элемент со значением x (ошибка, если нет)list.pop([i]) — Удаляет элемент и возвращает его (по умолчанию последний)list.index(x[, start[, end]]) — Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)list.count(x) — Возвращает количество элементов xlist.sort(key=...) — Сортирует список (например len, abs)list.reverse() — Разворачивает списокlist.copy() — Поверхностная копия спискаlist.clear() — Очищает список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 (это не особо нужно на ЕГЭ, но просто прочитать разок было бы неплохо).
Рассмотрим методы:
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]) — Возвращает значение, если ключа нет — создаёт его с defaultdict.update([other]) — Обновляет словарь из other (перезаписывает ключи, возвращает None)dict.values() — Возвращает значения словаряПотом напишу ок да