Python: списки и словари

Продолжаем учить язык программирования пайтон Python. Переходим к изучению 5 главы по книге: Майкл Доусон “Программируем на Python”, 2014 (Michael Dawson “Python Programming for the Absolute Beginner”, 3rd Edition), где освоим списки, списочные методы и словари.

Списки в Python

Списки похожи на кортежи, которые мы изучали в прошлой главе. Важно запомнить, что в отличие от кортежей, списки могут изменяться. Общие принципы работы с кортежами применимы к спискам.Общий вид списка:

spisok=['раз', 'два', 'три','n']

Python: циклы for, константы, срезы, кортежи, последовательности len, range, in, choice

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

Изменение списка — это его основная фишка при сравнении с кортежами:

  • присвоить новое значение любому элементу: spisok[0]='кот'
  • присвоить новое значение срезу списка: spisok[0:2]='кот'
  • удалить элемент из списка: del spisok[0], при этом длина списка уменьшится;
  • аналогично можно удалить срез списка.

Списочные методы — расширения для управления списками:

  • добавить новый элемент в конец списка: spisok.append(переменная)
  • вставить элемент в конкретную позицию списка: spisok.insert(позиция, значение);
  • удалить элемент из списка: spisok.remove(переменная) при этом важно проверить, если ли удаляемый элемент в списке через условные конструкции;
  • сортировка списка:
    • spisok.sort по возрастанию;
    • spisok.sort(reverse=True) по убыванию;
  • подсчет количества раз повторения элемента в списке: spisok.count(переменная);
  • показать номер позиции в списке, где впервые встречается значение: spisok.index(переменная);
  • показать значение конкретной позиции списка и удалить его из списка:
    • spisok.pop([позиция]);
    • spisok.pop([]) – покажется и удалится последний элемент списка.

Вложенные списки — список организации данные, где внутри списков находятся не отдельные элементы, а списки или кортежи. Аналогично можно создать вложенный кортеж.

Общий вид вложенного списка:

vlojenniy_spisok=['раз', ['кот', 'медведь'], ('сыр', 'колбаса')]

Общий вид вызова элементов вложенных списков или кортежей:

print(vlojenniy_spisok[3][1])

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

Распаковка последовательности — создание для каждого элемента из списка / кортежа своей переменной. Если есть список: spisok=['kot','eda'], то его распаковка будет выглядеть так: basya, miska = ['kot','eda'].

Словари в Python

Словари — это пары “ключ” и “значение” по аналогии с обычными словарями в реальной жизни.

Общий вид словаря:

slovar={'ключ_1':'значение_1',
        'ключ_2':'значение_2'}

Создать новую пару значений в словаре или заменить существующую:

slovar[ключ]=значение

Удалить пару значений из словаря:

del slovar[ключ]

Чтобы достать значение из словаря, нужно ввести ключ: slovar['ключ_1'], будет выведено 'значение_1'. Как и в случае удаление элементов из списка, при доставании значений из словаря сначала лучше проверить, если такой ключ в словаре или нет при помощи условных конструкций. 

Словарный методы:

  • get() — достает значение по ключу, а если ключа нет, то выдает значение None или любое другое заранее установленное значение, например slovar.get('ключ_3', 'Значение по умолчанию вместо None');
  • keys() — показывает все ключи словаря;
  • values() — показывает все значения словаря;
  • items() — показывает все пары ключей и значений в виде кортежей.

Игра “Виселица”

Задача: написать программу — игра “Виселица”, где компьютер выбирает неизвестное пользователю слово, игрок должен угадать это слово, предполагая наличие в слове разных букв. Игрок предлагает букву, если такой буквы нет в слове, то компьютер дорисовывает изображение. Если за ограниченное количество попыток игрок не угадает все слово, то он проиграет.

 

This entry was posted in Python. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *