Выбрать главу

>>> s

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

Тип dict

Словарь (хэш, ассоциативный массив) — это изменчивая структура данных для хранения пар ключ–значение, где значение однозначно определяется ключом. В качестве ключа может выступать неизменчивый тип данных (число, строка, кортеж и т.п.). Порядок пар ключ–значение произволен. Ниже приведен литерал для словаря и пример работы со словарем:

d = {1: 'one', 2: 'two', 3: 'three', 4: 'four'}

d0 = {0: 'zero'}

print d[1] # берется значение по ключу

d[0] = 0   # присваивается значение по ключу

del d[0]   # удаляется пара ключ–значение с данным ключом

print d

for key, val in d.items(): # цикл по всему словарю

 print key, val

for key in d.keys(): # цикл по ключам словаря

 print key, d[key]

for val in d.values(): # цикл по значениям словаря

 print val

d.update(d0) # пополняется словарь из другого

print len(d) # количество пар в словаре

Тип file

Объекты этого типа предназначены для работы с внешними данными. В простом случае — это файл на диске. Файловые объекты должны поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close() и т.п.

Следующий пример показывает копирование файла:

f1 = open("file1.txt", "r")

f2 = open("file2.txt", "w")

for line in f1.readlines():

 f2.write(line)

f2.close()

f1.close()

Стоит заметить, что кроме собственно файлов в Python используются и файлоподобные объекты. В очень многих функциях просто неважно, передан ли ей объект типа file или другого типа, если он имеет все те же методы (и в том же смысле). Например, копирование содержимого по ссылке (URL) в файл file2.txt можно достигнуть, если заменить первую строку на

import urllib

f1 = urllib.urlopen("http://python.onego.ru")

О модулях, классах, объектах и функциях будет говориться на других лекциях.

Выражения

В современных языках программирования принято производить большую часть обработки данных в выражениях. Синтаксис выражений у многих языков программирования примерно одинаков. Синтаксис выражений Python не удивит программиста чем–то новым. (Разве что цепочечные сравнения могут приятно порадовать.)

Приоритет операций показан в нижеследующей таблице (в порядке уменьшения). Для унарных операций x обозначает операнд. Ассоциативность операций в Python — слева–направо, за исключением операции возведения в степень (**), которая ассоциативна справа налево.

Операция Название
lambda лямбда–выражение
or логическое ИЛИ
and логическое И
not x логическое НЕ
in, not in проверка принадлежности
is, is not проверка идентичности
<, <=, >, >=, !=, == сравнения
| побитовое ИЛИ
^ побитовое исключающее ИЛИ
& побитовое И
<<, >> побитовые сдвиги
+- сложение и вычитание
*, /, % умножение, деление, остаток
+x, -x унарный плюс и смена знака
~x побитовое НЕ
** возведение в степень
x.атрибут ссылка на атрибут
x[индекс] взятие элемента по индексу
x[от:до] выделение среза (от и до)
f(аргумент, ...) вызов функции
( ... ) скобки или кортеж
[ ... ] список или списковое включение
{кл:зн, ...} словарь пар ключ–значение
`выражения` преобразование к строке (repr)