Язык программирования Python - [5]

Шрифт
Интервал

), так и обычные двойные кавычки (>"). Для многострочных литералов можно использовать утроенные апострофы или утроенные кавычки. Управляющие последовательности внутри строковых литералов задаются обратной косой чертой (>\). Примеры написания строковых литералов:

>s1 = "строка1"

>s2 = 'строка2\nс переводом строки внутри'

>s3 = """строка3

>с переводом строки внутри"""

>u1 = u'\u043f\u0440\u0438\u0432\u0435\u0442' # привет

>u2 = u'Еще пример' # не забудьте про coding!


Для строк имеется еще одна разновидность: необработанные строковые литералы. В этих литералах обратная косая черта и следующие за ней символы не интерпретируются как спецсимволы, а вставляются в строку «как есть»:

>my_re = r"(\d)=\1"

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

Набор операций над строками включает конкатенацию «>+», повтор ">*", форматирование ">%". Также строки имеют большое количество методов, некоторые из которых приведены ниже. Полный набор методов (и их необязательных аргументов) можно получить в документации по Python.

>>>> "A" + "B"

>'AB'

>>>> "A"*10

>'AAAAAAAAAA'

>>>> "%s %i" % ("abc", 12)

>'abc 12'

Некоторые методы строковых объектов будут рассмотрены в лекции, посвященной обработке текстов.

Тип tuple

Для представления константной последовательности (разнородных) объектов используется тип кортеж. Литерал кортежа обычно записывается в круглых скобках, но можно, если не возникают неоднозначности, писать и без них. Примеры записи кортежей:

>p = (1.2, 3.4, 0.9) # точка в трехмерном пространстве

>for s in "one", "two", "three": # цикл по значениям кортежа

>print s

>one_item = (1,)

>empty = ()

>p1 = 1, 3, 9 # без скобок

>p2 = 3, 8, 5, # запятая в конце игнорируется

Использовать синтаксис кортежей можно и в левой части оператора присваивания. В этом случае на основе вычисленных справа значений формируется кортеж и связывается один в один с именами в левой части. Поэтому обмен значениями записывается очень изящно:

>a, b = b, a

Тип list

В «чистом» Python нет массивов с произвольным типом элемента. Вместо них используются списки. Их можно задать с помощью литералов, записываемых в квадратных скобках, или посредством списковых включений. Варианты задания списка приведены ниже:

>lst1 = [1, 2, 3,]

>lst2 = [x**2 for x in range(10) if x % 2 == 1]

>lst3 = list("abcde")

Для работы со списками существует несколько методов, дополнительных к тем, что имеют неизменчивые последовательности. Все они связаны с изменением списка.

Последовательности

Ниже обобщены основные методы последовательностей. Следует напомнить, что последовательности бывают неизменчивыми и изменчивыми. У последних методов чуть больше.

СинтаксисСемантика
>len(s)Длина последовательности >s
>x in sПроверка принадлежности элемента последовательности. В новых версиях Python можно проверять принадлежность подстроки строке. Возвращает >True или >False
>x not in s>= not x in s
>s + s1Конкатенация последовательностей
>s*n или >n*sПоследовательность из >n раз повторенной >s. Если >n < 0, возвращается пустая последовательность.
>s[i]Возвращает >i–й элемент >s или >len(s)+i–й, если >i < 0
>s[i:j:d]Срез из последовательности >s от >i до >j с шагом >d будет рассматриваться ниже
>min(s)Наименьший элемент >s
>max(s)Наибольший элемент >s

Дополнительные конструкции для изменчивых последовательностей:

>s[i] = x>i–й элемент списка >s заменяется на >x
>s[i:j:d] = tСрез от >i до >j (с шагом >d) заменяется на (список) >t
>del s[i:j:d]Удаление элементов среза из последовательности
Некоторые методы для работы с последовательностями

В таблице приведен ряд методов изменчивых последовательностей (например, списков).

МетодОписание
>append(x)Добавляет элемент в конец последовательности
>count(x)Считает количество элементов, равных >x
>extend(s)Добавляет к концу последовательности >последовательность
>index(x)Возвращает наименьшее >i, такое, что >s[i] == x. Возбуждает исключение >ValueError, если >x не найден в >s
>insert(i, x)Вставляет элемент >x в >i–й промежуток
>pop(i)Возвращает >i–й элемент, удаляя его из последовательности
>reverse()Меняет порядок элементов >s на обратный
>sort([cmpfunc])Сортирует элементы >s. Может быть указана своя функция сравнения >cmpfunc
Взятие элемента по индексу и срезы

Здесь же следует сказать несколько слов об индексировании последовательностей и выделении подстрок (и вообще — подпоследовательностей) по индексам. Для получения отдельного элемента последовательности используются квадратные скобки, в которых стоит выражение, дающее индекс. Индексы последовательностей в Python начинаются с нуля. Отрицательные индексы служат для отсчета элементов с конца последовательности (>-1 — последний элемент). Пример проясняет дело:

>>>> s = [0, 1, 2, 3, 4]

>>>> print s[0], s[-1], s[3]

>0 4 3

>>>> s[2] = -2

>>>> print s

>[0, 1, -2, 3, 4]

>>>> del s[2]

>>>> print s

>[0, 1, 3, 4]

Примечание:

Удалять элементы можно только из изменчивых последовательностей и желательно не делать этого внутри цикла по последовательности.

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


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.