Наоми Седер - Python. Экспресс-курс
- Название:Python. Экспресс-курс
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0908-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Наоми Седер - Python. Экспресс-курс краткое содержание
Наоми Седер рассказывает не только об основных особенностях языка Python, но и его объектно-ориентированных возможностях, которые появились в Python 3. Данное издание учитывает все изменения, которые произошли с языком за последние 5 лет, а последние 5 глав рассказывают о работе с большими данными.
Python. Экспресс-курс - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Пожалуй, основной встроенной функцией списков является функция len , которая возвращает количество элементов в списке:
>>> x = [2, "two", [1, 2, 3]]
>>> len(x)
3
Обратите внимание: функция len не учитывает элементы внутреннего вложенного списка.
БЫСТРАЯ.ПРОВЕРКА:.LEN()
Что вернет функция len() для каждого из следующих списков: [0]; []; [[1, 3, [4, 5], 6], 7]?
5.2. Индексы списков
Если вы будете понимать, как работают индексы списков, вы сможете извлечь намного больше пользы из программирования на языке Python. Пожалуйста, вни-мательно прочитайте весь раздел!
Для извлечения элементов из списка Python используется синтаксис, сходный с синтаксисом индексирования массивов C. Как в C и во многих других языках, отсчет индексов в Python начинается с 0; при запросе элемента 0 вы получаете первый элемент списка, при запросе элемента 1 — второй элемент и т. д. Несколько примеров:
>>> x = ["first", "second", "third", "fourth"]
>>> x[0]
'first'
>>> x[2]
'third'
Однако механизм индексирования Python заметно превосходит индексирование C по гибкости. Отрицательные индексы обозначают позиции элементов от конца списка; –1 соответствует последней позиции списка, –2 — предпоследней и т. д. Продолжим пример для того же списка x :
>>> a = x[-1]
>>> a
'fourth'
>>> x[-2]
'third'
Для операций, в которых задействован только один индекс списка, обычно мож-но представлять индекс как указатель на конкретный элемент списка. Для более сложных операций индексы правильнее представлять как обозначения позиций между элементами. Так, для списка ["frst", "second", "third", "fourth"] индексы можно представлять так:

Это не так важно при извлечении одного элемента, но Python может извлекать или выполнять присваивание сразу для целой части списка — такая операция на-зывается сегментированием (slicing). Вместо того чтобы вводить list[index] для извлечения элемента после позиции index , введите list[index1:index2] для из-влечения всех элементов от index1 (включительно) до index2 (не включая) в новый список. Несколько примеров:
>>> x = ["first", "second", "third", "fourth"]
>>> x[1:-1]
['second', 'third']
>>> x[0:3]
['first', 'second', 'third']
>>> x[-2:-1]
['third']
Казалось бы, если второй индекс обозначает позицию списка, предшествующую позиции первого индекса, код должен вернуть элементы между этими индексами в обратном порядке, однако на практике этого не происходит. Вместо этого код возвращает пустой список:
>>> x[-1:2]
[]
При сегментировании списка также можно опустить index1 или index2 . Если от-сутствует index1 , сегмент начинается от начала списка, а если отсутствует index2 , сегмент продолжается до конца списка:
>>> x[:3]
['first', 'second', 'third']
>>> x[2:]
['third', 'fourth']
Если опущены оба индекса, новый список распространяется от начала до конца исходного списка, то есть список копируется. Этот прием может пригодиться для создания копии, которую можно изменять без модификации исходного списка: >>> y = x[:]
>>> y[0] = '1 st'
>>> y
['1 st', 'second', 'third', 'fourth']
>>> x
['first', 'second', 'third', 'fourth']
ПОПРОБУЙТЕ.САМИ:.СЕГМЕНТЫ.И.ИНДЕКСЫ Используя то, что вы знаете о функции len() и сегментах списков, как бы вы получили вторую половину списка неизвестного размера? Поэкспериментируйте в сеансе Python и убедитесь в том, что ваше решение работает.
5.3. Модификация списков
Синтаксис индексирования может использоваться как для модификации списков, так и для извлечения из них отдельных элементов. Укажите индекс в левой части оператора присваивания:
>>> x = [1, 2, 3, 4]
>>> x[1] = "two"
>>> x
[1, 'two', 3, 4]
Синтаксис сегментов может использоваться и в этом случае. Команда вида lista[index1:index2] = listb заменяет все элементы lista между index1 и index2 элементами из listb . Список listb может содержать больше или меньше элементов, чем удаляется из lista ; в этом случае длина lista изменяется. Сегментное при-сваивание может использоваться для выполнения разных операций:
[1, 2, 3, 4, 5, 6, 7]
>>> x[:0] = [-1, 0] Присоединяет список к началу списка
>>> x
[-1, 0, 1, 2, 3, 4, 5, 6, 7]
>>> x[1:-1] = [] Удаляет элементы из списка
>>> x
[-1, 7]
Присоединение одного элемента к списку — операция настолько распространенная, что для нее был определен специальный метод append : >>> x = [1, 2, 3]
>>> x.append("four")
>>> x
[1, 2, 3, 'four']
При попытке присоединения одного списка к другому может возникнуть пробле-ма — список будет присоединен как один элемент основного списка: >>> x = [1, 2, 3, 4]
>>> y = [5, 6, 7]
>>> x.append(y)
>>> x
[1, 2, 3, 4, [5, 6, 7]]
Метод extend похож на метод append , но он предназначен для добавления элементов одного списка к другому:
>>> x = [1, 2, 3, 4]
>>> y = [5, 6, 7]
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6, 7]
Также существует специальный метод insert , который вставляет новый элемент списка между двумя существующими элементами или в начало списка. Метод insert используется как метод списков и получает два дополнительных аргумента. Первый дополнительный аргумент определяет индекс позиции списка, в которую будет вставлен новый элемент, а второй — сам новый элемент: >>> x = [1, 2, 3]
>>> x.insert(2, "hello")
>>> print(x)
[1, 2, 'hello', 3]
>>> x.insert(0, "start")
>>> print(x)
['start', 1, 2, 'hello', 3]
Метод insert интерпретирует индексы так, как описано в разделе 5.2, но в большин-стве случаев проще представлять вызов list.insert(n, elem) как вставку elem перед
n -м элементом списка list . Метод insert создан исключительно для удобства. Все, что можно сделать c методом insert , также можно сделать посредством присваивания сегментов. А именно конструкция list.insert(n,elem) эквивалентна list[n:n] = [elem] , где n — неотрицательное число. Использование insert несколько упрощает чтение кода, к тому же метод insert поддерживает отрицательные индексы: >>> x = [1, 2, 3]
>>> x.insert(-1, "hello")
>>> print(x)
[1, 2, 'hello', 3]
Для удаления элементов списков или сегментов рекомендуется использовать коман ду del . Эта команда тоже не делает ничего такого, чего нельзя было бы сделать при по-мощи присваивания сегментов, но она лучше запоминается и упрощает чтение кода: >>> x = ['a', 2, 'c', 7, 9, 11]
>>> del x[1]
>>> x
['a', 'c', 7, 9, 11]
>>> del x[:2]
>>> x
[7, 9, 11]
В общем случае команда del list[n] эквивалентна list[n:n+1] = [] , тогда как команда del list[m:n] делает то же самое, что list[m:n] = [] . Метод remove не является обратным по отношению к insert . Если метод insert вставляет элемент в заданную позицию, remove ищет первый экземпляр заданного значения в списке и удаляет это значение из списка: >>> x = [1, 2, 3, 4, 3, 5]
>>> x.remove(3)
Читать дальшеИнтервал:
Закладка: