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

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

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

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

Отличаются они возможностью ссылаться на элементы кортежа не только по числовому индексу, но и по имени, что в свою очередь позволяет создавать сложные агрегаты из элементов данных. В модуле со11есгтопз имеется функция пааебгор1е(). Эта функция используется для создания собственных типов кортежей. Например: 5а1е = со!1есттопв, пааебтор1е("5а1е", "ргобост1б совтоаег1а бате доапт1ту ргтсе") Первый аргумент функции со! 1ес11опа, пааеб1ор1е( ) — это имя создаваемого кортежа. Второй аргумент — это строка имен, разделенных пробелами, для каждого элемента, который будет присутствовать в этом кортеже. Первый аргумент и имена во втором аргументе должны быть допустимыми идентификаторами языка Руб)топ.

Функция возвращает класс (тип данных), который может использоваться для создания именованных кортежей. Так, в примере выше мы можем интерпретировать имя За1е как имя любого другого класса (такого как гор1е) в языке Рубикон и создавать объекты типа Ба1е.' Например: ва!ев = [) ва1ев.аррепб(5а1е(432, 921, "2008-09-14", 3, 7.99)) за1ев.аррепб(5а1е(4!9, 874, "2008-09-!5", т, 18,49)) В этом примере мы создали список из двух элементов типа Яа1е, то есть из двух именованных кортежей. Мы можем обращаться к элементам таких кортежей по их индексам — например, обратиться к элементу рг1се в первом элементе списка ва1ев можно с помощью выражения ва1еа[0)[-1) (вернет значение 7.99) — или по именам, которые делают программный код более удобочитаемым: тота1 = 0 Тог ва1е тп ва1ез.

тота1 += ва!е.Овал!!ту * аа1е.рпсе ргтпт("тога! $(0:.21)".(огаат(тета!)) а выведет: тота1 $42 46 Очень часто простоту и удобство, которые предоставляют именованные кортежи, можно обратить на пользу делу. Например, ниже приводится версия примера «а1гсгай» нз предыдущего подраздела (стр. 133), имеющая более аккуратный вид: »> Атгогагт = со1!ест!сов.пааебтор!е("А!гога!1", "аапогаотогег аобе1 веаттпд") »> 5еаыпд = со1!ест)опз.пааебтор1е("8еаттпд", "а1п!аоа аахтаоа") Примечание для программистов, использующих объектно-ориентированный стиль: каждый класс, созданный таким способом, будет являться подклассом класса шр!е.

135 Последовательности »> атгсгатт = А1гсгатт("Азгьоа", "4320-200", Беат>Ар()00, 220)) »> а(гсгатт.зеат1пр.эактэоэ 220 Уже видно, что именованные кортежи могут быть очень удобны; кроме того, в главе 6 мы перейдем к изучению объектно-ориентированного программирования, где выйдем за пределы простых именованных кортежей и узнаем, как создавать свои собственные типы данных, которые могут не только хранить элементы данных, но и иметь собственные методы.

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

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

Другой спо- стр 142' соб создания списков заключается в использовании генераторов списков — эта тема будет рассматриваться ниже в этом подразделе. Поскольку все элементы списка в действительности являются ссылками на объекты, списки, как и кортежи, могут хранить элементы любых типов данных, включая коллекции, такие как списки и кортежи. Списки могут сравниваться с помощью стандартных операторов сравнения («, =, ==, ! =, »=, ), при этом сравнивание производится поэлементно (и рекурсивно, при наличии вложенных элементов, таких как списки или кортежи в списках). В результате выполнения операции присваивания 1 = (-17. 5, 7 К(10", 49, "з)", ("гав", 5, "есзо"), 7] мы получим список, как показано на рис.

3.2. Глава Э. Типы коллекций Рис. 3.2. Позиции элементов в слиске К спискам, таким как [, мы можем применять оператор извлечения среза, повторяя его столько раз, сколько потребуется для доступа к эле- ментам в списке, как показано ниже: 0[0] == 0[-5] == -17.5 0[1] == [[-5] == 'Х!10' 1[1ПО] == [[-5П0] == 'к' [[4П2] == 1[4П-1] == 1[-2П2] == [[-2П-1] == 'еспо' [[4П2П1] == [[4П2П-3] == [[-2П-1П1] == 1[-2П-1П-3] == 'с' Списки, как и кортежи, могут вкладываться друг в друга; допускают выполнение итераций по их элементам и извлечение срезов.

Все примеры с кортежами, которые приводились в предыдущем подразделе, будут работать точно так же, если вместо кортежей в них будут использованы списки. Списки поддерживают операторы проверки на вхождение 1п и лог 1п, оператор конкатенации +, оператор расширения += (то есть добавляет операнд справа в конец списка) и операторы дублирования * и *=. Списки могут также использоваться в качестве аргументов функции 1еп() и в инструкции 0е1, которая будет рассматриваться в этом подразделе и которая описывается во врезке »Удаление элементов с помощью инструкции г(е[» на стр.

139. Кроме того, списки предоставляют методы, перечисленные в табл. 3.1. Таблица 3.1. Методы слисков Синтаксис 0 зррепп (х) ы ссппг(х) Описание Добавляет элемент х э конец списка 1 Возвращает число вхождений элемента х в список [ Добавляет э конец списка [ все элементы итерируемого объ- екта а; оператор»= делает то же самое Ы ехгепп(з) э Возвращает индекс самого первого (слева) вхождения элемен- та х в список 1 (или в срез з1а г1: епс списка [), в противном слу- чае возбуждает исключение ра)пе5ггег Ы гппех(х.

эгагг, епа) Вставляет элемент х в список [ в позицию [пг 1 С гпвег1(1, х) [ рср() ы рор(7) Удаляет самый последний элемент из списка [ н возвращает его в качестве результата Удаляет из списка [ элемент с индексом 1пг 1 и возвращает его в качестве результата Последовательности Синтаксис Описание Удаляет самый первый (слева) найденный элемент х из спи- ска Е или возбуждает исключение На1иеЕггсг, если элемент х ве будет найден 'ь.геасуе(х) Переставляет в памяти элементы списка в обратном порядке С геиегзе() с зпгт(,,.) Сортирует список в памяти.

Этот метод прнФункция иимает те же необязательные аргументы Аеу тее() н геуегзе, что и встроенная функция зсгтее() стр. 184, 170 Несмотря на то, что для доступа к элементам списка можно использовать оператор извлечения среза, тем не менее в некоторых ситуациях бывает необходимо одновременно извлечь две или более частей списка. Сделать это можно с помощью операции распаковывания последовательности. Любой итерируемый объект (списки, кортежи и другие) может быть распакован с помощью оператора распаковывания»звездочка» (*). Когда слева от оператора присваивания указывается две или более переменных, одна из которых предваряется символом °, каждой переменной присваивается по одному элементу списка, а переменной со звездочкой присваивается оставшаяся часть списка.

Ниже приводится несколько примеров выполнения распаковывания списков: »> т!гзт, гезт = [9, 2, -4, 8, 7] »> гтгж, гезт (9, [2, -4, 8, 7]) »> гтгж, аы, 1аж = "спаг1ез Рш!тр Агтьиг Сестре итпсзсг".зр!11() »> 11гзт, а!С. 1азт ('сьаг1ез', ['Рь!1тр', 'Агтпиг', 'Сестре'], 'птпсзсг') »> *стгестсыез, ехеситаь1е = "/изг/1пса1/ь!п/9»!а".зр1!1( '/ ) »> стгестсыез, ехеситаЬ)е ([ , изг, 1сса!, Ь!и ], 9ч!а ) Ее( ргсеист(а, Ь. с): гетигп а * Ь * с я здесь * - этр оператор умножения тогда мы можем вызывать эту функцию с тремя аргументами или ис- пользовать аргументы со звездочкой: »> ргсеист(2, 3, 5) 30 »>С=[2, 3, 5! »> ргсеис!(*ь) Когда используется оператор распаковывания последовательности, как в данном примере, выражение *газ! и подобные ему называются выражениями со звездочкой.

В языке Ру1)гоп имеется также похожее понятие ареументое со звез- дочкой. Например, допустим, что имеется следующая функция, при- нимающая три аргумента: ЯЗВ Глава 3, Типы коллекций 30 »> ргосцс!(2, *Ц1:]) 30 В первом примере функция вызывается, как обычно, с тремя аргументами. Во втором вызове использован аргумент со звездочкой; в этом случае список из трех элементов распаковывается оператором *, так что функция получает столько аргументов, сколько ей требуется.

Того же эффекта можно было бы добиться при использовании кортежа с тремя элементами, В третьем вызове функции первый аргумент передается традиционным способом, а другие два — посредством применения операции распаковывания двухэлементного среза списка [. Функции и передача аргументов полностью будут описываться в главе 4. В программах всегда однозначно известно, является оператор * оператором умножения или оператором распаковывания последовательности. Когда он появляется слева от оператора присваивания — это оператор распаковывания; когда он появляется где-то в другом месте (например, в вызове функции) — это оператор распаковывания, если он используется в одноместном операторе, и оператор умножения, если он используется в двухместном операторе.

Мы уже знаем, что имеется возможность выполнять итерации по элементам списка с помощью конструкции гог !Геа !п (:. Если в цикле потребуется изменять элементы списка, то можно использовать следующий прием: Гог > гп галде(1еп(1)): 1[>] = ргосеая(1[>]) о Встроенная функция гапце() возвращает целочисленный Функция галов(), итератор.

С одним целочисленным аргументом, л, итерастр.)ау тор гап0е() возвращает последовательность чисел О, 1, ..., п — 1. Этот прием можно использовать для увеличения всех элементов в списке целых чисел. Например: Гог ! >п гансе( 1еп(пцаЬега)) пцпЬега[!] += 1 Поскольку списки поддерживают возможность извлечения срезов, в определенных случаях один и тот же эффект может быть достигнут как с помощью оператора извлечения среза, так и с помощью одного из методов списков. Например, предположим, что имеется список иооаа = [ "Сесе г", "Уегу", "Г! г" ]; дополнить такой список можно двумя способами: проса и= ["Кацгу, Гьагсл"] ! носов.ехгепо(["канг!", 3ьагсп"]) В обоих случаях в результате будет получен список ['Сезаг', 'Уеуг', 'Р!г', 'Кацг!', '[агсп'].

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

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

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

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