5. Структуры данных

Эта глава более подробно описывает некоторые моменты, с которыми вы уже знакомы, и также добавляет некоторые новые факты.

5.1. Подробнее о списках

Списковый тип данных имеет несколько больше методов. Здесь все методы списковых объектов:

list.append(x)
Добавляет элемент в конец списка. Эквивалентно a[len(a):] = [x].

list.extend(iterable)
Расширяет список добавлением всех элементов из итерации. Эквивалентно a[len(a):] = iterable.

Программа "Депозиты"

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

3. Неформальное введение в Python

В следующих примерах ввод и вывод различаются присутствием или отсутствием приглашений (>>> (docs.python.org/3/glossary.html#term) и ... (docs.python.org/3/glossary.html#term-1)): чтобы повторить пример, вы должны ввести все после приглашения, когда оно появляется; строки, которые не начинаются с приглашения, являются выводом интерпретатора. Заметьте, что вторичное приглашение на отдельной строке в примере означает, что вы должны ввести пустую строку; это используется для окончания многострочной команды.

11. Краткий обзор стандартной библиотеки - Часть II

Этот второй тур охватывает более продвинутые модули, которые поддерживают профессиональные потребности программирования. Эти модули редко встречаются в небольших скриптах.

Эмуляция таблицы базы данных с помощью класса и списка

Задача. Создать список объектов. Каждый объект представляет собой как бы запись в таблице базы данных и включает поля: id, название_предмета, количество раз его ввода (qty).

id и qty должны вычисляться автоматически, пользователь вводит только название предмета.
id очередного предмета можно генерировать исходя из количества уже существующих объектов (элементов списка) + 1.

Методы списка

  • append() - добавляет элемент в конец списка.
    >>> lst = ['a', 45, 89, 'who']
    >>> lst.append(67)
    >>> lst
    ['a', 45, 89, 'who', 67]
  • extend() - добавляет в конец списка список-аргумент.
    >>> li = ['a1', (1,2,3)]
    >>> lst.extend(li)
    >>> lst
    ['a', 45, 89, 'who', 67, 'a1', (1, 2, 3)]
    >>> li.extend([8,3])
    >>> li
    ['a1', (1, 2, 3), 8, 3]
    >>> lst
    ['a', 45, 89, 'who', 67, 'a1', (1, 2, 3)]

Теги

Генераторы списков

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

>>> lst1
[4, 10, 7, 3, 8, 6, 4, 4, 8, 7, 7, 5, 4, 3, 7, 6, 7, 4, 5, 10]
>>> i = 0
>>> for item in lst1:
...     lst1[i] = item + 10
...     i += 1
... 
>>> lst1
[14, 20, 17, 13, 18, 16, 14, 14, 18, 17, 17, 15, 14, 13, 17, 16, 17, 14, 15, 20]

Есть более "хитрый" способ:

Вставка элементов в сортированный список

Модуль bisect позволяет вставлять элемент в сортированный по возрастанию список, не нарушая сортировки.

В модуле bisect есть два основных метода:

Списки. Передача ссылки и передача копии

Если один список является вложенным в другой, то этого списка, через переменную, повлечет за собой его изменение в том списке, куда он был вложен. Во второй строке кода в b записывается не значение, связанное с a, а ссылка.

Теги

Как удалить элемент списка или вставить элемент в произвольное место

Допустим есть такой список:

>>> a = [1,2,3,4,5,6,7,8,9]

И мы хотим удалить из него элемент с индексом 3, имеющий значение 4. Если попытаться это сделать так:

>>> a[3] = []

, то получим совсем не то, что надо:

>>> a
[1, 2, 3, [], 5, 6, 7, 8, 9]

Другими словами, число 4 было заменено на пустой список.

Теги