Читаем Язык программирования Python полностью

>>> for i in (False, True):

… for j in (False, True):

… print i, j, ":", i and j, i or j, not i

False False : False False True

False True : False True True

True False : False True False

True True : True True False

Следует отметить, что Python даже не вычисляет второй операнд операции and или or, если ее исход ясен по первому операнду. Таким образом, если первый операнд истиннен, он и возвращается как результат or, в противном случае возвращается второй операнд. Для операции and все аналогично.

Тип string и тип unicode

В Python строки бывают двух типов: обычные и Unicode–строки. Фактически строка — это последовательность символов (в случае обычных строк можно сказать «последовательность байтов»). Строки–константы можно задать в программе с помощью строковых литералов. Для литералов наравне используются как апострофы ('), так и обычные двойные кавычки ("). Для многострочных литералов можно использовать утроенные апострофы или утроенные кавычки. Управляющие последовательности внутри строковых литералов задаются обратной косой чертой (\). Примеры написания строковых литералов:

Листинг

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) Добавляет к концу последовательности последовательность s

index(x) Возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s

insert(i, x) Вставляет элемент x в i–й промежуток

pop(i) Возвращает i–й элемент, удаляя его из последовательности

reverse Меняет порядок элементов s на обратный

sort([cmpfunc]) Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT