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

Лутц М. - Изучаем Python (1077325), страница 27

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

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

Если такая подстрока будет найдена, части ее, соответствующие шаблону, заключенному в круглые скобки, будут доступны в виде групп. Например, следующий шаблон извлекает три группы, разделенные символами олеша: »> ввссП = ге.ватсп('/(. ° )/(. )/(. ° )', '/свг/Нове/1сваег)асК') >» васса.ргоорв() ('нег', 'Нове', '1ивоег)асК') Поиск по шаблону реализован в виде чрезвычайно сложного механизма обработки текста, но в языке РуФ)гоп имеется поддержка еще более сложных механизмов, включая возможность обработки естественного языка человеческого общения. Впрочем, для этого руководства я и так сказал уже достаточно об обработке строк, поэтому теперь мы перейдем к рассмотрению другого типа.

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

Единственное отличие состоит в том, что результатом таких операций являются списки, а не строки. Например, для списка, состоящего из трех элементов: »> ь = [123, 'враз', 1.23] № Список из трех обьектов разных типов »> 1еп(ь) № Число элементов в списке 3 Мы можем обращаться к элементам списка по их индексам, получать срезы и т.

д., точно так же, как и в случае со строками: »> ЦО) 123 № доступ к злеиенту списка по его индексу »> ([:-1] № Операция полу~ения среза возвравает повий список [ 123. 'зрав'] »> ( + [4, 5, б] № Операция конкатенации такие аозвравает навий список [ 123, ' зрав ', 1. 23, 4, 5, б ] »> № Наши действия не привели к изменению оригинального списка [ 123, 'враз', 1.23] Методы, специфичные для типа Списки в языке Руб[зоп являютея аналогом массивов в других языках программирования, но они обладают более широкими возможностями.

С одной стороны, они не ограничены одним типом элементов, например, только что рассмотренный список содержит три элемента совершенно разных типов (целое число, строку и число с плавающей точкой). Кроме того, размер списков не ограничен, благодаря чему онн могут увеличиваться и уменьшаться по мере необходимости в результате выполнения операций, характерных для списков: »> ы вррепб('М1') № увеличение: в конец списка добавляется новой обьект »> [123. 'врвш'. 1 23.

'М1'] »> ы рор(г) 1. 23 № Уиеньшение' удаляется элеиент из середним списка »> № инструкция "бе) ((2>" такие удалит злеиент списка [123, зраш, И1' ] В данном примере метод ар репе увеличивает размер списка и вставляет в конец новый элемент. Метод рср (или эквивалентная ему инструкция бе]) удаляет из списка элемент с заданным смещением, что приводит к уменьшению списка. Другие методы списков позволяют вставлять новые элементы в произвольное место списка (зпзег1), удалять элемент, заданный значением (геаоче), и т.

д. Так как списки являются Списки изменяемыми, большинство методов списков не создают новый список, а изменяют оригинальный список: »> И ['ЬЬ', 'аа', 'сс') »> И.аогг() »> Н ['аа', 'ЬЬ', 'сс') >» И. геувгае() »> Н ['сс', 'ЬЬ', 'аа Ч Метод аогс, использованный в этом примере, по умолчанию упорядочивает элементы списка по возрастанию, а метод геуегае — по убыванию.

В обоих случаях происходит непосредственное изменение самого списка. Проверка выхода за границы Хотя списки не имеют фиксированного размера, язык Ру1Ьоп все равно не допускает возможности обращаться к несуществующим элементам списка. Обращение к элементам списка по индексам, значения которых выходят за пределы списка, всегда является ошибкой: »> (123, 'пращ', 'И1') >» Ц99) ... текст сообщения об ошибке опущен... 1пбехЕггог: 11ас 1псех оос от тапсе >» ((99) = 1 твист сообщения об ошибке опущен... 1поехеггог: 1[вт аввтрпшеп1 1поех оцт ог гансе В этом примере я специально допустил ошибку (особенно неприятную в языке С, который не выполняет проверку выхода за границы массива, как РуЬЬоп) и попыталея выполнить присваивание за пределами списка.

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

Делаетея это с помощью списка, содержащего вложенные списки: »> Н ((1, 2, 3). Ф Натрица Зхб в виде впокенних списков [4 5 6) 126 Глава 4. Введение з типы объектов языка Рут[зоп [7, 8, Я)] »> Н [[1, 2, 3], [4, 5, 8], [7, 8, 9]] Здесь мы реализовали список, состоящий из трех других списков. В результате была получена матрица чисел ЗхЗ.

Обращаться к такой структуре можно разными способами: »> Н[1] № Получить строку 2 [4, 5, б) »> Н[1Ц2] № Получить строку 2, а затеи элеиент 3 в этой строке б Первая операция в этом примере возвращает вторую строку целиком, а вторая — третий элемент в этой строке. Соединение операций индексирования позволяет все дальше и дальше погружаться вглубь вложенной структуры объектов.' Дополнительные операции над списками Помимо обычных операций над последовательностями и методов списков, Руб)топ предоставляет возможность выполнять более сложные операции над списками, известные как выралсенил генераторов списков ([ьвг сотрге)зеле[оп ехртеаа[оп), которые представляют эффективный способ обработки таких структур, как наша матрица. Предположим, например, что нам требуется извлечь из нашей матрицы второй столбец. Строку легко можно получить, выполнив операцию индексирования, потому что матрица хранится в виде строк, однако, благодаря генераторам списков, получить столбец ничуть не сложнее: »> со12 = [гон[1] гог гои 1п н) № Выбирает элеиенты второго столбца »> со[2 [2, 5, 8) »> Н № Матрица не изиенилась [[ 1, 2, 3 ), [4, 5, б ], [ 7, 8, 9] ] Генераторы списков следуют традиции системы представления множеств; они позволяют создавать новые списки, выполняя выражение для каждого элемента в последовательности, по одному за раз, слева Такая организация матриц вполне пригодна для решения небольших задач, но для реализации более сложных программ числовой обработки информации желательно использовать специализированные расширения, например ХшпРу.

Такого рода инструменты позволяют хранить и обрабатывать матрицы намного эффективнее, чем такая структура, реализованная в виде вложенных списков. Как уже говорилось, расширение ХсшРу превращает Руб)ьоп в свободный и более мощный эквивалент системы Маб[ аЬ, н такие организации, как [ч[АЗА, Ьоз А! апюз и ЛРМогяап С]газе используют его для решения научных и финансовых задач. Дополнительную информацию об этом расширении зы без труда найдете з Сети. 127 Словари направо.

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

На практике генераторы списков могут приобретать еще более сложную форму: »> [гоп[1] + 1 1ог гои 1п И) № Добавить 1 к камдоиу элементу в столбце 2 [3, б, 9] »> [ гоп[ 1] гог гои 1п и 11 гоп[ 1] х 2 == О) № Отфильтровать нечетнме эначенил [2, 03 Первая операция в этом примере прибавляет 1 к значениям всех отобранных элементов, а вторая использует условный оператор тг для исключения из результата нечетных чисел с помощью операции деления по модулю — % (остаток от деления). Генераторы списков, применяемые к спискам, возвращают в качестве результатов новые списки, но могут использоваться и для любых других объектов, допускающих выполнение итераций, например, ниже показано использование генератора списков для обхода жестко заданного в программном коде списка координат и строк: >» б1ао = [И[1Ц1] Гог 1 [п [О, 1, 2)) № Выборка элементов диагонали матрице »> 01ао [1, 5, 9) »> боев[па = [с * 2 гог с 1п 'враа'3 № дублирование сииволов е строке »> боцЫев [ эв', 'рр', 'аа', 'аа'3 Генераторы списков, на мой взгляд, достаточно сложная тема, чтобы говорить о них здесь более подробно.

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

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

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

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