Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 35

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 35 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 352018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Когда вслед за именем функции записываются круглые скобки, они сообщают интерпретатору, что он должен вызвать эту функцию. Программа ил!диеигогг(в2ру на одну строку длиннее, чем исходная программа ип(г)иеюогг(в1.ру ((ало гг со11есг(олв), а, кроме того, изменились строки создания и обновления словаря. Ниже показано, как создается словарь со значениями по умолчанию: еегев = сс11есг)сев.еегее1ге~сг (впг) Словарь со значениями по умолчанию вогез никогда не возбудит исключение КеуЕггог. Если будет необходимо выполнить выражение х = ногов[ "худ" ] и в словаре будет отсутствовать элемент с ключом "хуг", то при обращении к несуществующему ключу словарь со значениями по умолчанию немедленно создаст новый элемент с ключом "хув" и значе- 163 Обход в цикле и копирование коллекций нием О (вызовом функции (пт( )), и это значение будет присвоено переменной х. ногпз(ноге) += 1 Теперь мы можем отказаться от использования метода 01сГ, пет() и просто увеличивать значение элемента.

Когда будет обнаружено самое первое вхождение слова, будет создан новый элемент со значением О (к которому тут же будет прибавлено число 1), а при обнаружении каждого последующего вхождения число 1 будет добавляться к текущему значению. Мы закончили полный обзор всех встроенных типов коллекций языка Ру(лоп и пары типов коллекций из стандартной библиотеки. В следующем разделе мы рассмотрим некоторые проблемы, общие для всех типов коллекций. Обход в цикле и копирование коллекций После того как будет создана коллекция элементов данных, вполне естественно возникает желание обойти все элементы, содержащиеся в ней.

В первом подразделе этого раздела мы познакомимся с итераторами языка Ру()гоп, а также с операторами и функциями, применяемыми для работы с итераторами. Еще одна часто выполняемая операция — копирование коллекций. Изза того, что в языке Ру(Ьоп повсеместно используются ссылки на объекты (ради повышения эффективности), существуют некоторые особенности, связанные с копированием, поэтому во втором подразделе этого раздела мы изучим принципы копирования коллекций и узнаем, как добиться именно того, что нам нужно. итераторы, функции и операторы для работы с итерируемыми объектами Итерируемый тип данных — это такой тип, который может возвращать свои элементы по одному.

Любой объект, имеющий метод 1тег (), или любая последовательность (то есть объект, имеющий метод оег(гев (), принимающий целочисленный аргумент со значением от О и выше), является итерируемым и может предоставлять итератор. Итератор — это объект, имеющий метод пехт (), который при каждом вызове возвращает очередной элемент и возбуждает исключение Згор1гегаг1оп после исчерпания всех элементов. В табл. 3.4 перечислены операторы и функции, которые могут применяться к итерируемым объектам.

164 Глава 3. Типы коллекций Таблица 3.4. Общие функции и операторы для работы с итерируемыми объектами Синтаксис Описание в11(!) апу(1) еппзегаге (1,вгэгг) 1еп(х) звх(1, Хеу) з1п(1, хеу) гехегвео(!) впз (1, вгвгг) г!р(11, ..., 1й) в+1 в*с х1п1 галсе (в !агг, ввор, егер) 5ОГ1ЕЗ (ц хеу, гехегве) Возвращает конкатенацию последовательностей в и 1 Возвращает конкатенацию из вп( и последовательностей в Возвращает Тгпе, если элемент х присутствует в итерируемом объекте 1, обратная проверка выполняется с помощью оператора по! 1п Возвращает Тгее, если все элементы итерируемого объекта ! в ло- гическом контексте оцениваются как значение Т гсе Возвращает Тгпе, если хотя бы один элемент нтерируемого объек- та 1 в логическом контексте оценивается как значение Тгсе Обычно используется в циклах го г...

1п, чтобы получить последо- вательность кортежей (! паех, ! Гез), где значения индексов начина- ют отсчитывать от 0 или от значения вгагг; подробности в тексте Возвращает «длину» объекта х. Если х — коллекция, то возвра- щаемое число представляет количество элементов. Если х — стро- ка, то возвращаемое число представляет количество символов Возвращает наибольший элемент в итерируемом объекте 1 нли элемент с наибольшим значением хеу(в вез), если функция пеу оп- ределена Возвращает наименьший элемент в итерируемом объекте 1 илн элемент с наименьшим значением хеу()вез), если функция хеу определена Возвращает целочисленный нтератор. С одним аргументом (в1ор) итератор представляет последовательность целых чисел от 0 до егор — 1, с двумя аргументами (вгагг, вгср) — последовательность целых чисел от в(агГ до в1ор - 1, с тремя аргументами — последа.

вательность целых чисел от вгаггдо в1ор - 1 с шагом егер Возвращает итератор, который будет возвращать элементы ите- ратора ! в обратном порядке Возвращает список элементов нтератора ! в отсортированном порядке; аргумент Псу используется для выполнения сортировки 1)БТ) (Ресогаве, Вогв, Т)пг)есогаве — декорирование, сортировка, обратное декорирование). Если аргумент гехегве имеет значение Т гее, сортировка выполняется в обратном порядке Возвращает сумму элементов нтерируемого объекта 1, плюс ар- гумент в ге г 1 (значение которого по умолчанию равно 0)1 объект 1 не должен содержать строк Возвращает итератор кортежей, используя итераторы от 11 до! Л; подробности в тексте 165 Обход з цикле и копирование коллекций Порядок, в котором возвращаются элементы, зависит от итерируемого объекта.

В случае списков и кортежей элементы обычно возвращаются в предопределенном порядке, начиная с первого элемента (находящегося в позиции с индексом 0), но другие итераторы возвращают элементы в произвольном порядке — например, итераторы словарей и множеств. ргооыот = 1 т = ттвг([1, 2, 4, 81) нот1в Тгыв: тгу: ргосвст .= ПВХ1(Ь) вховрт бтор11вгатьоп Ьгвак ргтпт(ргооыот) а выведет: 84 ргосыст = ! Го г 1 1п [ 1, 2, 4, 8 ); ргосоот *= т ргтпт(ргооыот) м выведет: 84 Любой (конечный) итерируемый объект 1 может быть преобразован в кортеж вызовом функции 1ор1е(1) или в список — вызовом функции Пат(1).

К итераторам могут применяться функции а11() и апу() и они часто используются в функциональном програм мировании. Ниже приводится пара примеров, демонст рирующих использование функций а11(), апу(), 1еп() м[п(), мах() и авм(): о Функцнонвльнов программнраваннв, стр. 397 »> х = [-2, 9, 7, -4, 3) »> в11(х), апу(х), 1вп(х), а(п(х), мах(х), вом(х) Встроенная функция 1(в г( ) используется двумя совершенно различными способами.

Применяемая к коллекции или к последовательности, она возвращает итератор для заданного объекта или возбуждает исключение ТуреЕггог, если объект не является итерируемым. Такой способ часто используется при работе с нестандартными типами коллекций и крайне редко — в других контекстах. Во втором варианте использования функции 1(ег() ей передается вызываемый объект (функция или метод) и специальное значение. В этом случае полученная функция или метод вызывается на каждой итерации, а значение этой функции, если оно не равно специальному значению, возвращается вызывающей программе; в противном случае возбуждается исключение Зто о[те та Стоп.

Когда в программе используется цикл [ог утеа [и )Гагар)е, интерпретатор Ру$)топ вызывает функцию 1(ег()Гагар)е), чтобы получить итератор. После этого на каждой итерации вызывается метод пех1 () итератора, чтобы получить очередной элемент, а когда возбуждается исключение 81ор[1вгаг[оп, оно перехватывается и цикл завершается. Другой способ получить очередной элемент итератора состоит в том, чтобы вызвать встроенную функцию пех((). Ниже приводятся два эквивалентных фрагмента программного кода (оба они вычисляют произведение элементов списка), в одном из них используется цикл уог ... [и, а во втором явно используется итератор: Глава 3. Типы коллекций 166 (Тгие.

Тгпе, 5, -4, 9, 13) »> х.аррепб(0) »> а11(х), апу(х), 1еп(х), в!п(х), вах(х), врв(х) (Га1яе, Тгпе, 6, -4, 9, 13) Из всех этих маленьких функций наиболее часто, пожалуй, используется функция 1еп(). Функция епсвегате() принимает итератор и возвращает объект перечисления. Этот объект может рассматриваться как своего рода итератор.

На каждой итерации он возвращает кортеж из двух элементов, первый из которых — это номер итерации (по умолчанию нумерация начинается с 0), а второй — следующий элемент итератора, который был передан функции епцвега(е(). Давайте рассмотрим порядок использования функции епсвега1е() в контексте небольшой, но законченной программы.

Программа дгернгогг(.ру принимает в виде аргументов командной строки слово и одно или более имен файлов. Она выводит имя файла, номер строки и саму строку, содержащую искомое слово.' Ниже приводится пример сеанса работы с программой: дгервсгб.ру Осв бага/(сгепавев.1хг баяв/(огепавев. 1хг;6!5:Осв!пухав бага/гогепавев, (х1,1435:Оов!и!к бага/Гсгепавев. 1х1.1611:Освлпа11 ба!а/Тогепавев.

1х(:3314:Орв>п!с Файлы с данными г(а!а//огепатевЛх! и Йа1а/яиглатеяЛх! содержат несортированные списки имен, по одному имени в каждой строке. Не считая инструкции импортирования модуля вув, программа занимает всего десять строк: 1Г 1еп(вуя.агду) < 3: рг!пг("сваде, дгервргб.ру всгб !п(>1е1 [1пг!1е2 (... !пг!1еи]]") вув.ехы() всгб = вув.агду[1] Гаг Г!1епаве !п вув.агду[2;]: гог 1>пс, 1!пе !и епивегэге(срэп((>1епаве), вгяг(=1): >Г всгб >и 1>пе: рг!пг("(О):(1);(2:.40)".Гсгвэг((!1епяве, 1!пс, 1!пе.гв!г>р())) Программа начинается с проверки наличия хотя бы двух аргументов командной строки.

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

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

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

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