Различия между версиями 2 и 3
Версия 2 от 2022-11-27 20:01:02
Размер: 5319
Редактор: FrBrGeorge
Комментарий: не тот номер
Версия 3 от 2022-11-28 00:17:14
Размер: 5319
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 59: Строка 59:
  * Имена файлов — от `prog_7_1.py` до `prog_5_16.py`
 * Прислать эти 12 файлов ''в виде шестнадцати приложений к одному письму'' по адресу <<MailTo(uneexlectures AT cs DOT msu DOT ru)>>
  * Имена файлов — от `prog_7_1.py` до `prog_7_16.py`
 * Прислать эти 16 файлов ''в виде шестнадцати приложений к одному письму'' по адресу <<MailTo(uneexlectures AT cs DOT msu DOT ru)>>

Хранениe и модификация набора произвольных данных

Повторение:

  • Последовательность
    • Можно перебрать циклом for

    • (часто) можно индексировать
    • (часто) можно брать секции

Все наши последовательности были неизменяемые.

  • Для того, чтобы из кортежа (1, 3, 5, 7, 9, 11) получить кортеж (1, 3, 5, 100500, 9, 11), надо проделать довольно много операций:

    • {i} сколько и каких?

    • {OK} сколько новых объектов при этом создаётся

  • То же для строк

Изменяемые последовательности

Что хочется:

  • Хранить произвольные объекты
  • Иметь доступ к ним по номеру (индексу) и получать подпоследовательности (секции)
  • + Менять один объект на другой

  • + Добавлять объекты и удалять их оттуда

  • + Добавлять, удалять и менять целые секции

Тип данных — list («список»).

  • {OK} Задание списка: [объект, объект, …]

    • {i} / {OK} Повторение:

      • сложение и умножение списков как последовательностей,
      • индексация и секционирование
  • Связывание произвольного объекта с помощью список[индекс] = объект

    • Повторение: чем отличаются левая часть «=» и правая (справа — выражения, слева имена)

  • {OK} Почему связывание — это не присваивание

  • {i} Из списка [1, 3, 5, 7, 9, 11] получить список [1, 3, 5, 100500, 9, 11].

    • Это тот же список!

  • {OK} Добавление объекта в конец списка .append() и снятие его оттуда .pop(); использовать или не использовать значение .pop()

    • {i} Вводить элементы до 0; если они положительные — добавлять в список, если отрицательные — удалять последний элемент списка. В конце вывести список.

  • {OK} Вставка и удаление произвольного элемента — del список[индекс], .insert()

  • {i} Написать программу: вводится N, а затем проводится два эксперимента:

    1. Заводится пустой список
    2. N раз добавляется элемент в список, удаляется, и добавляется снова

    3. Выводится сообщение
    4. Заводится ещё один пустой список
    5. N раз вставляется элемент в начало нового списка, удаляется оттуда, и добавляется снова

    6. Выводится сообщение
  • {i} Какая часть работает быстрее?

  • {OK} Немного о том, что списки — это массивы: некоторые операции работают сразу, а вот эти требуют обшарить/перестроить весь массив

    • del, .insert()

    • .remove() и in

  • {OK} Замена, вставка и удаление секций

  • {i} Поменять местами первую и вторую половину списка

    • подсказка 1: нельзя сделать a = a[полдлины:] + a[:полдлины] — это будет как с кортежами, новый список

    • подсказка 2: a, b = b, a

  • Ещё методы списка (.index(), .count(), .copy(), .sort() / sorted(список)¸…)

Если успеем: упорядочивание элементов в массиве, простой вариант с выбором минимума

Д/З

День отдыха закончился ☹.

  • Отщёлкать седьмое занятие учебника и решить все задачи (да, 16 штук)

  • Скопировать решения в соответствующие файлы и проверить, что они всё ещё работают!

    • Имена файлов — от prog_7_1.py до prog_7_16.py

  • Прислать эти 16 файлов в виде шестнадцати приложений к одному письму по адресу <uneexlectures AT cs DOT msu DOT ru>

    • В поле Subject должно быть «слово» PhilosoPython2022 (другие слова тоже можно ☺)

Python/PhilosoPython2022/11_Lists (последним исправлял пользователь FrBrGeorge 2022-11-28 00:17:14)