Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Тип 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

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

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

Листинг

последовательность[нач:кон:шаг]

где нач — промежуток начала среза, кон — конца среза, шаг — шаг. По умолчанию нач=0, кон=len(последовательность), шаг=1, если шаг не указан, второе двоеточие можно опустить.

А теперь пример работы со срезами:

Листинг

>>> s = range(10)

>>> s

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

>>> s[0:3]

[0, 1, 2]

>>> s[-1:]

[9]

>>> s[::3]

[0, 3, 6, 9]

>>> s[0:0] = [-1, — 1, — 1]

>>> s

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

>>> del s[:3]

>>> 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

Поделиться:
Популярные книги

Лихие. Авторитет

Вязовский Алексей
3. Бригадир
Фантастика:
альтернативная история
попаданцы
5.00
рейтинг книги
Лихие. Авторитет

Мастер 9

Чащин Валерий
9. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер 9

Ст. сержант. Назад в СССР. Книга 5

Гаусс Максим
5. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ст. сержант. Назад в СССР. Книга 5

Чужак из ниоткуда 2

Евтушенко Алексей Анатольевич
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 2

Вернуть невесту. Ловушка для попаданки

Ардова Алиса
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Вернуть невесту. Ловушка для попаданки

Выдумщик (Сочинитель-2)

Константинов Андрей Дмитриевич
6. Бандитский Петербург
Детективы:
боевики
7.93
рейтинг книги
Выдумщик (Сочинитель-2)

Лекарь Империи 3

Карелин Сергей Витальевич
3. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи 3

Тринадцатый IX

NikL
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Тринадцатый IX

Второгодка. Книга 2. Око за око

Ромов Дмитрий
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Второгодка. Книга 2. Око за око

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Воплощение Похоти

Некрасов Игорь
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Воплощение Похоти

Воронцов. Перезагрузка. Книга 2

Тарасов Ник
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 2

Решала

Поселягин Владимир Геннадьевич
1. Решала
Фантастика:
фэнтези
боевая фантастика
6.25
рейтинг книги
Решала

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7