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

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 58

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 58 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 582020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Однакоесли явно указать значение третьего предела, его можно использовать, чтобыпропустить некоторые элементы или полностью изменить их порядок.Например, выражение X[1:10:2] вернет каждый второй элемент последовательности X в диапазоне смещений от 1 до 9 – то есть будут выбраны элементы сосмещениями 1, 3, 5, 7 и 9. Как правило, по умолчанию первый и второй пределы принимают значения 0 и длину последовательности соответственно, поэтому выражение X[::2] вернет каждый второй элемент от начала и до конца последовательности:>>> S = ‘abcdefghijklmnop’>>> S[1:10:2]‘bdfhj’>>> S[::2]‘acegikmo’Можно также использовать отрицательное значение шага. Например, выражение “hello”[::-1] вернет новую строку “olleh”.

Здесь первые две границы получают значения по умолчанию – 0 и длина последовательности, а величинашага, равная -1, указывает, что срез должен быть выбран в обратном порядке – справа налево, а не слева направо. В результате получается перевернутаяпоследовательность:>>> S = ‘hello’>>> S[::-1]‘olleh’При использовании отрицательного шага порядок применения первых двухграниц меняется на противоположный. То есть выражение S[5:1:-1] извлечетэлемент со 2 по 5 в обратном порядке (результат будет содержать элементы последовательности со смещениями 5, 4, 3 и 2):>>> S = ‘abcedfg’>>> S[5:1:-1]‘fdec’222Глава 7. СтрокиПропуск элементов и изменение порядка их следования – это наиболее типичные случаи использования операции получения среза с тремя пределами.

Заболее подробной информацией вам следует обратиться к руководству по стандартной библиотеке языка Python (или поэкспериментировать в интерактивной оболочке). Мы еще вернемся к операции получения среза с тремя пределами далее в этой книге, когда будем рассматривать ее в соединении с операторомцикла for.Далее в этой книге мы также узнаем, что операция извлечения среза эквивалентна операции индексирования, в которой в качестве индекса используетсяспециальный объект среза, что очень важно для разработчиков классов, которым требуется реализовать поддержку обеих операций:>>> ‘spam’[1:3]# Синтаксис извлечения среза‘pa’>>> ‘spam’[slice(1, 3)] # используется объект среза‘pa’>>> ‘spam’[::-1]‘maps’>>> ‘spam’[slice(None, None, -1)]‘maps’Придется держать в уме: срезыПовсюду в этой книге я буду включать аналогичные врезки с описаниемнаиболее типичных случаев использования рассматриваемых особенностей языка на практике.

Поскольку у вас нет возможности осознатьреальные возможности языка, пока вы не увидите большую часть картины, эти врезки будут содержать множество упоминаний тем, незнакомых для вас. Поэтому вам следует воспринимать эти сведения как предварительное знакомство со способами, которые связывают абстрактныеконцепции языка с решением наиболее распространенных задач программирования.Например, далее вы увидите, что аргументы командной строки, переданные сценарию на языке Python при запуске, доступны в виде атрибута argv встроенного модуля sys:# File echo.pyimport sysprint sys.argv% python echo.py -a -b -c[‘echo.py’, ‘-a’, ‘-b’, ‘-c’]Обычно вас будут интересовать только параметры, которые следуют заименем программы. Это приводит нас к типичному использованию операции получения среза: мы можем с помощью единственной инструкции получить все элементы списка, за исключением первого.

В данномслучае выражение sys.argv[1:] вернет требуемый список [‘-a’, ‘-b’, ‘-c’].После этого список можно обрабатывать по своему усмотрению, не заботясь о присутствии имени программы в начале.Строки в действии223Кроме того, операция получения среза часто используется для удалениялишних символов из строк, считываемых из файлов. Если известно,что строки всегда завершаются символом новой строки (символ \n), егоможно удалить одним-единственным выражением – line[:-1], котороевозвращает все символы строки, кроме последнего (нижняя граница поумолчанию принимается равной 0).

В обоих случаях операция извлечения подстроки обеспечивает логику выполнения, которую в низкоуровневых языках программирования пришлось бы реализовывать явно.Обратите внимание, что для удаления символа новой строки часто предпочтительнее использовать метод line.rstrip, потому что он не повреждает строки, в которых отсутствует символ новой строки в конце, – типичный случай при создании текстовых файлов некоторыми текстовымиредакторами. Операция извлечения подстроки применима, только есливы полностью уверены, что строки завершаются корректным образом.Инструменты преобразования строкОдин из девизов языка Python – не поддаваться искушению делать предположения о том, что имелось в виду. Например, Python не позволит сложитьстроку и число, даже если строка выглядит как число (то есть содержит толькоцифры):>>> “42” + 1TypeError: cannot concatenate ‘str’ and ‘int’ objectsВ соответствии с архитектурой языка оператор + может означать и операциюсложения, и операцию конкатенации, вследствие чего выбор типа преобразования становится неочевидным.

Поэтому интерпретатор воспринимает такуюинструкцию как ошибочную. Вообще в языке Python отвергается любая магия, которая может осложнить жизнь программиста.Как же быть, если сценарий получает число в виде текстовой строки из файлаили от пользовательского интерфейса? В этом случае следует использовать инструменты преобразования, чтобы можно было интерпретировать строку какчисло или наоборот. Например:>>> int(“42”), str(42) # Преобразование из/в строки(42, ‘42’)>>> repr(42),# Преобразование в строку, как если бы она была‘42’# литералом в программном кодеФункция int преобразует строку в число, а функция str преобразует числов строковое представление (по сути – в то, что выводится на экран). Функцияrepr (и прежний ее эквивалент, обратные апострофы, который был удаленв Python 3.0) также преобразует объект в строковое представление, но возвращает объект в виде строки программного кода, который можно выполнить,чтобы воссоздать объект.

Если объект – строка, то инструкция print выведеткавычки, окружающие строку:>>> print(str(‘spam’), repr(‘spam’))(‘spam’, “’spam’”)224Глава 7. СтрокиПодробнее о различиях между функциями str и repr можно прочитать во врезке «Форматы представления repr и str», в главе 5. Кроме того, функции intи str изначально предназначены для выполнения преобразований.Вы не сможете смешивать строковые и числовые типы в таких операторах, как+, но вы можете вручную выполнить необходимые преобразования операндовперед выполнением операции:>>> S = “42”>>> I = 1>>> S + ITypeError: cannot concatenate ‘str’ and ‘int’ objects>>> int(S) + I43# Операция сложения>>> S + str(I)‘421’# Операция конкатенацииСуществуют похожие встроенные функции для преобразования вещественныхчисел в/из строки:>>> str(3.1415), float(“1.5”)(‘3.1415’, 1.5)>>> text = “1.234E-10”>>> float(text)1.2340000000000001e-010Позднее мы познакомимся со встроенной функцией eval – она выполняет строку, содержащую программный код на языке Python, и потому может выполнять преобразование строки в объект любого вида.

Функции int и float преобразуют только числа, но это ограничение означает, что они обычно выполняютэту работу быстрее (и безопаснее, потому что они не принимают программныйкод произвольного выражения). Как было показано в главе 5, выражение форматирования строки также обеспечивает возможность преобразования чиселв строки. Форматирование будет обсуждаться ниже, в этой же главе.Преобразование кодов символовИмеется также возможность выполнить преобразование одиночного символав его целочисленный код ASCII, для чего нужно передать этот символ функции ord – она возвращает фактическое числовое значение соответствующегобайта в памяти. Обратное преобразование выполняется с помощью функцииchr, она получает целочисленный код ASCII и преобразует его в соответствующий символ:>>> ord(‘s’)115>>> chr(115)‘s’Эти функции можно применить ко всем символам строки в цикле.

Они могуттакже использоваться для реализации своего рода строковой математики. Например, чтобы получить следующий по алфавиту символ, его можно преобразовать в число и выполнить математическое действие над ним:Строки в действии>>>>>>>>>‘6’>>>>>>‘7’225S = ‘5’S = chr(ord(S) + 1)SS = chr(ord(S) + 1)SСледующий пример преобразования представляет собой альтернативу встроенной функции int, по крайней мере для односимвольных строк, для преобразования строки в целое число:>>> int(‘5’)5>>> ord(‘5’) - ord(‘0’)5Такие преобразования могут использоваться в сочетании с операторами цикла,представленными в главе 4 и подробно рассматриваемыми в следующей частикниги, для получения целочисленных значений из строковых представленийдвоичных чисел.

В каждой итерации текущее значение умножается на 2 и затем к нему прибавляется числовое значение следующей цифры:>>>>>>>>>.........>>>13B = ‘1101’# Двоичные цифры преобразуются в числа с помощью функции ordI = 0while B != ‘’:I = I * 2 + (ord(B[0]) - ord(‘0’))B = B[1:]IОперация побитового сдвига влево (I << 1) могла бы дать тот же эффект, чтои операция умножения на 2. Но так как мы еще не познакомились с цикламии уже видели встроенные функции int и bin в главе 5, которые могут использоваться в задачах преобразования двоичных чисел в Python 2.6 и 3.0, то жесамое можно реализовать, как показано ниже:>>> int(‘1101’, 2) # Преобразовать двоичное представление в целое число13>>> bin(13)# Преобразовать целое число в двоичное представление‘0b1101’С течением времени язык Python��������������������������������������������������������������������������������������стремится автоматизировать решение наиболее типичных задач!Изменение строкПомните термин «неизменяемая последовательность»? Слово «неизменяемая»означает, что вы не можете изменить содержимое самой строки в памяти (то естьневозможно изменить элемент строки, выполнив присваивание по индексу):>>> S = ‘spam’>>> S[0] = “x”Возникает ошибка!226Глава 7.

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

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

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

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