Следующий элемент любого языка программирования — типы данных. Напомню, что Python — язык с неявной сильной динамической типизацией, то есть интерпретатор, выполняя программу, сам определяет тип переменной в зависимости от значения, которое ей присвоено. Но при этом преобразовывать типы в подавляющем большинстве случаев нужно явно.
Небольшое замечание: определить тип (точнее, класс) конкретной переменной в Python можно с помощью функции type(переменная)
.
Типы данных
Числа в Python
В Python 3 встроено три числовых типа: целый, вещественный и комплексный.
Целые числа (int). В Python имеют неограниченную длину [ну, почти — память у компьютера всё же не бесконечна ;-)]. То есть можно, например, совершенно точно посчитать, сколько будет 123456789012345678901234567890 * 9876543210987654321
. Преобразовать данные в целый тип можно с помощью функции int()
.
Заметьте: при преобразовании вещественного числа в целое функция int()
просто отбрасывает дробную часть.
Вещественные числа (float). Точность представления ограничена примерно 16 значащими цифрами. Явное преобразование в вещественный тип производится функцией float()
.
Комплексные числа (complex). Записываются в виде суммы действительной и мнимой частей. Заметьте: мнимая часть обозначается не традиционной для математиков i, а буквой j (привет, электронщикам! ;-)). Например, 5+2j
Для преобразования в комплексное служит функция complex(r,i)
. Например, print(complex(2*5,1/2))
выведет на экран (10+0.5j)
.
Строки в Python
Строковые константы создаются как последовательность символов, заключенная в одиночные или двойные кавычки. Например, строками будут "Python is fun"
и 'I love python'
.
Склеивание строк
В Python операцию конкатенации («склеивания») строк обозначают знаком +.
Например, результатом выпражения "Hello" + " " + "World"
будет «Hello World». Строку также можно повторять («умножать»). Например, выражение 'Халва'*3
дает в результате ‘ХалваХалваХалва’.
Выбрать отдельный символ строки можно, указав в квадратных скобках его индекс (порядковый номер). Например, 'Программирование'[0]
даст результат ‘П’ (напомню, что в Python нумерация всегда начинается с нуля).
Срезы
Если нужно получить фрагмент строки (так называемый срез), в квадратных скобках записывают индекс его начального символа и индекс, следующий за конечным: [ start : stop ]
. Например, 'Программирование'[0:3]
даст ‘Про’.
Можно также вести отсчет от конца строки, указывая отрицательные значения индекса (последний символ имеет индекс -1). Например, 'Python'[-1]
даст ‘n’. 'Python'[0:-1]
даст ‘Pytho’.
Мы также можем выбрать символы не подряд, указав шаг: [ start : stop : step ]
Например, 'Python'[0:-1:2]
даст ‘Pto’, а 'howareyou'[0:-1:3]
даст ‘hay’.
Если опустить начальный индекс, оставив двоеточие, то считается, что срез нужно начинать от начала строки. Если опустить конечный индекс — до конца строки.
Разделение строки
Чтобы разбить строку на список слов, используется метод split()
.
sentence = "I love python"
words = sentence.split()
print(words)
В результате выполнения такого фрагмента программы будут выведено [‘I’,’love’,’python’].
Списки в Python
Список — это структура данных, хранящая упорядоченный набор значений. Список записывается как заключенная в квадратные скобки последовательность значений, разделенных запятыми. Элемент списка может быть получен указанием его индекса в квадратных скобках. Например:
words= ['Hello', 'world', 'how', 'are', 'you']
print(words[0])
В результате будет выведено слово ‘Hello‘.
Можно также получать срезы списка аналогично срезам строк.
На практике обычно в список объединяют элементы одного типа, но Python позволяет включать в них и значения разных типов. В том числе возможно использование вложенных списков. Например:
things= ['нечто', 0, [1, 2], 4.56]
print(things[2, 1], things[0])
Выведено будет ‘2 нечто’.
Рассмотрим теперь некоторые полезные методы Python для работы со списками.
append
Метод append
добавляет элемент в конец существующего списка. Например:
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)
Результат: [1,2,3,4].
insert
Метод insert вставляет новый элемент в заданное место существующего списка. Например:
words ['python', 'fun']
words.insert(1, 'is')
# (индекс, значение)
print(words)
Результат: [‘python’,’is’,’fun’].
len
Чтобы узнать количество элементов в списке (его длину), служит функция len
. Например:
numbers = [1, 2, 3, 4, 5]
print(len(numbers))
Результатом будет число 5.
Некоторые другие полезные функции и методы:
- max(list) — получить максимальный элемент списка.
- min(list) — получить минимальный элемент списка.
- list.remove(item) — удалить элемент из списка.
- list.pop(index) — «извлечь» элемент (удалить из списка и вернуть значение как результат метода); если индекс не указан, по умолчанию берется последний элемент.
- list.reverse() — реверсировать порядок элементов списка.
- list.sort() — отсортировать список по возрастанию.
Например:
list = [3, 5, 2, 4, 1]
list.sort()
print(list)
list.reverse()
print(list)
В результате будет выведено:
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
Для списков также работают операции + и * (аналогично строкам).
Форматирование строк в Python
А теперь буквально несколько слов о методе format, позволяющем очень гибко управлять тем, как будет представлена информация.
В первую очередь этот метод вставляет в нужные места строки значения своих аргументов. Например:
instr = ['гитара', 'синтезатор', 'ударные']
group = 'Для записи трека потребуются {0}, {1} и {2}.'
print(group.format(instr[2], instr[0], instr[1]))
В результате будет выведено
Для записи трека потребуются ударные, гитара и синтезатор.
В данном случае при вызове метода указано три аргумента. Каждый из них будет подставлен в исходную строку вместо так называемого поля замены — фигурных скобок {}, в которых в данном случае указан порядковый номер.
Кстати, при подстановке в строку значений элементов списка можно поступить и по-другому: в качестве параметра методу format передать весь список, а в поле замены кроме номера аргумента указывать еще и индекс. Например, тот же самый результат, что и в предыдущем примере, можно получить вот такой программой:
instr = ['гитара', 'синтезатор', 'ударные']
group = 'Для записи трека потребуются {0[2]}, {0[0]} и {0[1]}.'
print(group.format(instr))
При необходимости один и тот же аргумент может быть подставлен в несколько мест строки. Например, при выполнении инструкции
print('{0}{1}{0}'.format('кол', 'о'))
на экране появится слово
колокол
Вообще-то, возможностей у метода format, намного больше, чем простая подстановка значений. В каждом поле замены можно дополнительно указать его ширину, заполняющий свободное пространство символ, выравнивание значения внутри поля, формат и точность представления числового значения и др. Но это выходит за рамки нашего краткого обзора.