Добрый день. Я сейчас прохожу курс повышения квалификации - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?
|
Введение в программирование на языке 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] | Удаление элементов среза из последовательности |
Некоторые методы для работы с последовательностями
В таблице приведен ряд методов изменчивых последовательностей (например, списков).
Взятие элемента по индексу и срезы
Здесь же следует сказать несколько слов об индексировании последовательностей и выделении подстрок (и вообще - подпоследовательностей) по индексам. Для получения отдельного элемента последовательности используются квадратные скобки, в которых стоит выражение, дающее индекс. Индексы последовательностей в 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] # берется значение по ключу d0[0] = 0 # присваивается значение по ключу del d0[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")
О модулях, классах, объектах и функциях будет говориться на других лекциях.