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

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

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

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

'Кп ', 'хп '] »> 3 1п [1, 2, 3) Тгцв »> Гог х гп [1, 2, 3): рг1п1 х, № Длина № Конкатенация № Повторение № Проверка на вхоидвниа № Обход в цикле На практике в текстах программ обработки списков вы нечасто встретите списки, заданные подобным образом. Чаще вам будет встречаться программный код, обрабатывающий списки, которые создаются динамически (во время выполнения).

Несмотря на всю важность владения синтаксисом литералов, следует иметь в виду, что большая часть структур данных в языке Рув)гоп конструируется во время выполнения программы. Списки, как и строки, поддерживают операторы + и * — для списков они так же соответствуют операции конкатенации и повторения, но в результате получается новый список, а не строка. Фактически списки поддерживают все общие операции над последовательностями, которые мы рассматривали применительно к строкам в предыдущей главе. 219 Списки в действии 123 Подробнее об операции обхода элементов списка в цикле Рог и о встроенной функции гапОе мы поговорим в главе 13, потому что они имеют отношению к синтаксису инструкций.

Говоря вкратце, оператор цикла гог выбирает элементы последовательности в порядке слева направо и выполняет одну или более инструкций для каждого из них. Последняя строка в табл. 8. 1 — это одна из дополнительных операций над списками, которые описываются в главе 13 и расширенное обсуждение которых приводится в главе 17.

Как говорилось в главе 4, они представляют собой способ построить список, применяя выражение к каждому элементу последовательности, единственной инструкцией. Несмотря на то, что оператор + со списками работает точно так же, как и со строками, очень важно знать, что с обеих сторон оператора должны находиться последовательности одного и того же типа, в противном случае во время работы программного кода вы получите сообщение об ошибке.

Например, нельзя выполнить операцию конкатенации для списка и строки, если предварительно не преобразовать список в строку (используя, например, обратные апострофы (Ьас]ос[по[ее), функцию 31г или 'гь -форматирование) или строку в список (с помощью встроенной функции 1131): »> атг([1, 2]) + "34" № то ве, что и Т1, 2]" + "34" '[1, 2]34' »> [1, 2] + 1[вт("34") № )о ве, что и 11, 2] ч ("3", "4"] [1, 2, '3', '4'] Индексы, срезы и матрицы Так как списки являются последовательностями, операции доступа к элементам по индексам и извлечения срезов работают точно так же, как и в случае со строками. Однако, в результате обращения к элементу по индексу возвращается объект, который расположен по указанному смещению, а в результате операции извлечения среза возвращается новый список: »> С = ['вращ', 'Вращ', '3РАМ1'] »> Ц2] № Отсчет сиещений начинается с нуля '3РАМ'' »> Ц-2] № Отрицательное сиещение: отсчитывается справа '3рав' »> [[1:] № Операция извлечения среза возвращает разделы списка ['3ращ', '3РАМ'.'] Здесь следует отметить следующее: поскольку списки (и объекты других типов) могут быть вложены в другие списки, иногда бывает необходимо объединять в цепочку несколько индексов, чтобы получить доступ к элементам на более глубоком уровне вложенности в структуре данных.

Например, один из простейших способов представления Глава 8. Списки и словари гго матриц (многомерных массивов) в языке Рус]топ заключается в использовании вложенных списков. Ниже приводится пример двухмерного массива размером ЗхЗ, построенного на базе списков: »> ща1г1х = П1, 2, 33, [4, 5, 63, [7, 6, 9]] С помощью первого индекса извлекается целая строка (в действительности — вложенный список), а с помощью второго извлекается элемент этой строки: »> ща1г1х[13 [4, 5, 6] »> ща1г[х[1П1] 5 »> щасг[х[2ПО] 7 »> щасг1х = [[1, 2, 83, [4, 5, 6), [7, 8, 9]1 »> ща1г[х[1П1] 5 Обратите внимание на то, что, как показано в предыдущем примере, список может быть при необходимости растянут на несколько строк, ограниченных квадратными скобками (подробнее о синтаксисе будет говориться в следующей части книги).

Далее в этой главе вы также увидите матрицы, реализованные на базе словарей. Модуль ХигпРу, упомянутый в главе б, для высокопроизводительной работы с числовыми данными предоставляет другие способы организации матриц. Изменениесписка Списки относятся к категории изменяемых объектов, поэтому они поддерживают операции, которые изменяют сам список невосредслтвенно.

То есть все операции, представленные в этом разделе, изменяют сам список объектов и не приводят к необходимости создавать новую копию, как это было в случае со строками. В языке РуФ]1оп приходится иметь дело только со ссылками на объекты, что обусловливает существенные различия между непосредственным изменением объекта и созданием нового объекта — как обсуждалось в главе 6, непосредственное изменение объекта может отражаться более чем на одной ссылке. Г]рисваивание по индексам и сревам при использовании списков существует воэможность изменять их содержимое, выполняя присваивание значений элементам (по смещению) или целым разделам (срезам) списка: »> С = ['аращ', 'зращ', '5РЯВ~'] »> Ц1] = 'азза' а Лрмсвамванме по индексу элемента »> ['эрам', 'ессэ, 5РЯМ!'] гг1 Списки в действии »> 1[0:2] ('еат', 'аоге') р присваиевнив срезу: удаление«вставке »> В Элеиенты 0 и 1 были звиенены ['еат', аоге, ЯРАИ! ] Обе операции присваивания — и отдельному элементу, и срезу — производятся непосредственно в списке — они изменяют сам список, а не создают новый список объектов.

Операция присваивания по индексу в языке Ру(]топ работает практически так же, как в языке С и во многих других языках программирования: интерпретатор замещает старую ссылку на объект в указанном смещении на новую. Присеаиеание срезу, последняя операция в предыдущем примере, замещает целый раздел списка за один прием. Поскольку это довольно сложная операция, проще будет представить ее как последовательное выполнение двух действий: 1. Удаление. Раздел списка, определяемый слева от оператора =, удаляется.

2. Вставка. Новые элементы, содержащиеся в объекте, расположенном справа от оператора =, вставляются в список, начиная с левого края, где находился прежний удаленный срез. В действительности это не совсем то, что происходит на самом деле, но это достаточно точно объясняет, почему число вставляемых элементов не должно соответствовать числу удаляемых элементов. Например, представим, что список 1 имеет значение [1, 2, 3], тогда в результате операции присваивания с[1:2]=[4,5] будет получен список [1,4,5,3].

Интерпретатор сначала удалит 2 (срез, состоящий из одного элемента), а затем, начиная с позиции удаленного элемента 2, вставит элементы 4 и 5. Это также объясняет, почему операция [[1: 2]=[] в действительности является операцией удаления, — интерпретатор удалит срез (элемент ео смещением 1) и затем вставит пустой список. В результате операция присваивания срезу замещает целый раздел списка, или «столбец», за одно действие. Поскольку длина последовательности справа от оператора = не должна обязательно соответствовать длине среза, которому выполняется присваивание, эта операция может использоваться для замены (посредством перезаписи), расширения (посредством вставки) или сжатия (посредством удаления) требуемого списка.

Это довольно мощная операция, но, честно говоря, она достаточно редко используется на практике. Обычно используются более простые способы замены, вставки и удаления (например, операция конкатенация и методы списков ]пввгт, рор и геаоце), которые программисты предпочитают использовать на практике. Методы списков Как и строки, объекты списков в языке Ру(]топ поддерживают специ- фичные методы: »> 1.аррепб('р)вазе') в Вызов иетодв добавлении элемента в конец слискв »> 222 Глава 8.

Списки и словари [ Еа1', 'аОгс', 'БРАМ. '', 'р1ЕаЭЕ'] »> [.эоггО Ф сортировка элеиентав списка ['Б' < 'е') »> ['БРАМ~ ', еа1', 'логе', 'р1еаэе'] Методы были представлены в главе 7. Коротко напомню, что методы— это функции (в действительности — атрибуты, ссылающиеся на функции), которые связаны с определенным типом объектов. Методы обеспечивают выполнение специфических операций, например, методы списков, представленные здесь, доступны только для списков. О В Ру(Ьоп версии 2.5 и более ранних сравнение выполняется поразному для объектов разных типов (например, списков и строк)— язык определяет способ упорядочения различных типов, который является детерминистским и не всегда может выглядеть правильным, Этот способ упорядочения основан на именах типов, вовлеченных в операцию сравнения, например, любые целые числа всегда меньше любых строк, потому что строка "Чпп' меньше, чем строка "э)г". При выполнении операции сравнения никогда не выполняется преобразование типов объектов, за исключением сравнения объектов числовых типов.

В Рус)топ 3.0 такой порядок, возможно, будет изменен: планируется, что в случае попытки сравнения объектов различных типов вместо прежнего способа упорядочения будет возбуждаться исключение. Так как метод сортировки использует операцию сравнения, это означает, что инструкция [1, 2, 'эраа'].эсгг() будет успешно выполнена в РуФЬоп 2.5, но будет возбуждать исключение в РХФЬоп 3.0.

За дополнительной информацией обращайтесь к примечаниям к выпуску Руслоп 3.0. В отличие от операции конкатенации (т), метод аррепс не создает новый объект, поэтому обычно он выполняется быстрее. Существует возможность имитировать работу метода аррепс с помощью операции присваивания срезу: выражение [[1еп( [): ]=[Х] соответствует вызову с.

аррепп(Х), а выражение [[; 0]=[Х] соответствует операции добавления в начало списка. В обоих случаях удаляется пустой сегмент списка и вставляется элемент Х, при этом изменяется сам список [, так же быстро, как при использовании метода аррепс. Наиболее часто используемым методом, пожалуй, является метод аррепб, который просто добавляет единственный элемент (ссылку на объект) в конец списка. В отличие от операции конкатенации, метод аррепб принимает единственный объект, а не список. По своему действию выражение [.

аррепо(Х) похоже на выражение [е[Х], но в первом случае изменяется сам список, а во втором — создается новый список.' Другой часто используемый метод — метод Бог1 — выполняет переупорядочивание элементов в самом списке. По умолчанию он использует стандартные операторы сравнения языка Русаков (в данном случае выполняется сравнение строк) и выполняет сортировку в порядке возрастания значений.

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

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

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

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

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