Главная » Просмотр файлов » М. Лутц - Изучаем Python (4-е издание)- 2011

М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 35

Файл №1126907 М. Лутц - Изучаем Python (4-е издание)- 2011 (М. Лутц - Изучаем Python (4-е издание)- 2011) 35 страницаМ. Лутц - Изучаем Python (4-е издание)- 2011 (1126907) страница 352019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 35)

Например, следующий шаблон извлекает три группы, разделенные символами слеша:>>> match = re.match(‘/(.*)/(.*)/(.*)’, ‘/usr/home/lumberjack’)>>> match.groups()(‘usr’, ‘home’, ‘lumberjack’)Поиск по шаблону реализован в виде чрезвычайно сложного механизма обработки текста, но в языке Python имеется поддержка еще более сложных механизмов, включая возможность обработки естественного языка человеческогообщения.

Впрочем, для этого руководства я и так сказал уже достаточно об обработке строк, поэтому теперь мы перейдем к рассмотрению другого типа.СпискиСписки – это самое общее представление последовательностей, реализованныхв языке Python. Списки – это упорядоченные по местоположению коллекцииобъектов произвольных типов, размер которых не ограничен. Кроме того, в отличие от строк, списки являются изменяемыми – они могут модифицироваться как с помощью операций присваивания по смещениям, так и с помощьюразнообразных методов работы со списками.Операции над последовательностямиПоскольку списки являются последовательностями, они поддерживают всеоперации над последовательностями, которые обсуждались в разделе, посвященном строкам.

Единственное отличие состоит в том, что результатом такихопераций являются списки, а не строки. Например, для списка, состоящего изтрех элементов:>>> L = [123, ‘spam’, 1.23] # Список из трех объектов разных типов>>> len(L)# Число элементов в списке3Мы можем обращаться к элементам списка по их индексам, получать срезыи так далее, точно так же, как и в случае со строками:>>> L[0]123# Доступ к элементу списка по его индексу>>> L[:-1][123, ‘spam’]# Операция получения среза возвращает новый список>>> L + [4, 5, 6] # Операция конкатенации также возвращает новый список[123, ‘spam’, 1.23, 4, 5, 6]134Глава 4. Введение в типы объектов языка Python>>> L# Наши действия не привели к изменению оригинального списка[123, ‘spam’, 1.23]Методы, специфичные для типаСписки в языке Python являются аналогом массивов в других языках программирования, но они обладают более широкими возможностями.

С однойстороны, они не ограничены одним типом элементов, например, только чторассмотренный список содержит три элемента совершенно разных типов (целоечисло, строку и вещественное число). Кроме того, размер списков не ограничен,благодаря чему они могут увеличиваться и уменьшаться по мере необходимости в результате выполнения операций, характерных для списков:>>> L.append(‘NI’) # Увеличение: в конец списка добавляется новый объект>>> L[123, ‘spam’, 1.23, ‘NI’]>>> L.pop(2)1.23# Уменьшение: удаляется элемент из середины списка>>> L# Инструкция “del L[2]” также удалит элемент списка[123, ‘spam’, ‘NI’]В данном примере метод append увеличивает размер списка и вставляет в конецновый элемент.

Метод pop (или эквивалентная ему инструкция del) удаляет изсписка элемент с заданным смещением, что приводит к уменьшению списка.Другие методы списков позволяют вставлять новые элементы в произвольноеместо списка (insert), удалять элемент, заданный значением (remove), и так далее. Так как списки являются изменяемыми, большинство методов списков несоздают новый список, а изменяют оригинальный список:>>> M = [‘bb’, ‘aa’, ‘cc’]>>> M.sort()>>> M[‘aa’, ‘bb’, ‘cc’]>>> M.reverse()>>> M[‘cc’, ‘bb’, ‘aa’]Метод sort, использованный в этом примере, по умолчанию упорядочивает элементы списка по возрастанию, а метод reverse – по убыванию. В обоих случаяхпроисходит непосредственное изменение самого списка.Проверка выхода за границыХотя списки не имеют фиксированного размера, язык Python, тем не менее, недопускает возможности обращаться к несуществующим элементам списка.

Обращение к элементам списка по индексам, значения которых выходят за пределы списка, всегда является ошибкой:>>> L[123, ‘spam’, ‘NI’]>>> L[99]...текст сообщения об ошибке опущен...IndexError: list index out of range135Списки>>> L[99] = 1... текст сообщения об ошибке опущен...IndexError: list assignment index out of rangeВ этом примере я специально допустил ошибку (особенно неприятную в языкеC, который не выполняет проверку выхода за границы массива, как Python)и попытался выполнить присваивание за пределами списка. Вместо того чтобы увеличить размер списка, интерпретатор Python сообщил об ошибке.

Чтобыувеличить список, необходимо воспользоваться таким методом, как append.Вложенные спискиОдна из замечательных особенностей базовых типов языка Python состоитв том, что они поддерживают возможность создания вложенных конструкцийпроизвольной глубины и в любых комбинациях (например, можно создатьсписок, содержащий словарь, который содержит другой список, и так далее).Одно из очевидных применений этой особенности – представление матриц, или«многомерных массивов» в языке Python.

Делается это с помощью списка, содержащего вложенные списки:>>> M = [[1, 2, 3], # Матрица 3 x 3 в виде вложенных списков[4, 5, 6], # Выражение в квадратных скобках может[7, 8, 9]] # занимать несколько строк>>> M[[1, 2, 3], [4, 5, 6], [7, 8, 9]]Здесь мы реализовали список, состоящий из трех других списков. В результате была получена матрица чисел 3 x 3.

Обращаться к такой структуре можноразными способами:>>> M[1][4, 5, 6]# Получить строку 2>>> M[1][2] # Получить строку 2, а затем элемент 3 в этой строке6Первая операция в этом примере возвращает вторую строку целиком, а вторая – третий элемент в этой строке. Соединение операций индексированияпозволяет все дальше и дальше погружаться вглубь вложенной структурыобъектов.1Генераторы списковПомимо обычных операций над последовательностями и методов списковPython предоставляет возможность выполнять более сложные операции над1Такая организация матриц вполне пригодна для решения небольших задач, но дляреализации более сложных программ числовой обработки информации желательноиспользовать специализированные расширения, например NumPy.

Такого рода инструменты позволяют хранить и обрабатывать матрицы намного эффективнее, чемтакая структура, реализованная в виде вложенных списков. Как уже говорилось,расширение NumPy превращает Python в свободный и более мощный эквивалентсистемы MatLab, и такие организации, как NASA, Los Alamos и JPMorgan Chase,используют его для решения научных и финансовых задач. Дополнительную информацию об этом расширении вы без труда найдете в Сети.136Глава 4. Введение в типы объектов языка Pythonсписками, известные как выражения генераторов списков (list comprehensionexpression), которые представляют эффективный способ обработки такихструктур, как приведенная в примере матрица. Предположим, например, чтонам требуется извлечь из нашей матрицы второй столбец. Строку легко можнополучить, выполнив операцию индексирования, потому что матрица хранится в виде строк, однако, благодаря генераторам списков, получить столбец ничуть не сложнее:>>> col2 = [row[1] for row in M] # Выбирает элементы второго столбца>>> col2[2, 5, 8]>>> M# Матрица не изменилась[[1, 2, 3], [4, 5, 6], [7, 8, 9]]Генераторы списков следуют традиции системы представления множеств; онипозволяют создавать новые списки, выполняя выражение для каждого элемента в последовательности, по одному за раз, слева направо.

Генераторы списковзаключены в квадратные скобки (чтобы отразить тот факт, что они создаютсписок) и составлены из выражения и конструкции цикла, которые используют одно и то же имя переменной (в данном случае row). В предыдущем примерегенератор списков интерпретируется так: «Получить элементы row[1] из каждой строки матрицы M и создать из них новый список». Результатом являетсяновый список, содержащий значения из второго столбца матрицы.На практике генераторы списков могут приобретать еще более сложную форму:>>> [row[1] + 1 for row in M] # Добавить 1 к каждому элементу в столбце 2[3, 6, 9]>>> [row[1] for row in M if row[1] % 2 == 0] # отфильтровать нечетные значения[2, 8]Первая операция в этом примере прибавляет 1 к значениям всех отобранныхэлементов, а вторая использует условный оператор if для исключения из результата нечетных чисел с помощью операции деления по модулю – % (остатокот деления).

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее