Числа в логическом контексте
Нулевые значения — ложь, ненулевые значения — истина.
Вы можете использовать числа в логическом контексте, например, в операторе if. Нулевые значения — ложь, ненулевые значения — истина.
>>> def is_it_true(anything): ①
... if anything:
... print("да, это истина")
... else:
... print("нет, это ложь")
...
>>> is_it_true(1) ②
да, это истина
>>> is_it_true(-1)
да, это истина
>>> is_it_true(0)
нет, это ложь
>>> is_it_true(0.1) ③
да, это истина
>>> is_it_true(0.0)
нет, это ложь
>>> import fractions
>>> is_it_true(fractions.Fraction(1, 2)) ④
да, это истина
>>> is_it_true(fractions.Fraction(0, 1))
нет, это ложь
① | Вы знали, что можно определять свои собственные функции в интерактивной оболочке Python? Просто нажимайте клавишу ↵ Enter в конце каждой строки, а чтобы закончить ввод нажмите клавишу ↵ Enter на пустой строке. |
② | В логическом контексте, ненулевые целые числа — истина; значение 0 — ложь. |
③ | Ненулевые числа с плавающей точкой — истина; значение 0.0 — ложь. Будьте осторожны с этим! Если имеется малейшая ошибка округления (как вы могли видеть в предыдущем разделе,это вполне возможно), то Python будет проверять значение 0.0000000000001 вместо 0.0 и соответственно вернёт логическое значение True. |
④ | Дроби тоже могут быть использованы в логическом контексте. Fraction(0, n) — ложь для всех значений n. Все остальные дроби — истина. |
Списки
Списки — рабочая лошадка Python. Когда я говорю «список», вы, наверное, думаете: «это массив, чей размер я должен задать заранее и который может хранить элементы только одного типа» и т. п., но это не так. Списки намного интереснее.
Списки в Python похожи на массивы в Perl 5. Там переменные, содержащие массивы, всегда начинаются с символа @; в Python переменные могут называться как угодно, язык следит за типом самостоятельно. |
В Python список — это нечто большее, чем массив в Java (хотя список можно использовать и как массив, если это действительно то, чего вы хотите от жизни). Точнее будет аналогия с Java-классом ArrayList, который может хранить произвольные объекты и динамически расширяться по мере добавления новых элементов. |
Создание списка
Создать список легко: впишите все значения, через запятую, в квадратных скобках.
>>> a_list = ['a', 'b', 'mpilgrim', 'z', 'example'] ①
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list[0] ②
'a'
>>> a_list[4] ③
'example'
>>> a_list[-1] ④
'example'
>>> a_list[-3] ⑤
'mpilgrim'
① | Сначала вы определили список из пяти элементов. Обратите внимание, они сохраняют свой первоначальный порядок. Это не случайно. Список — это упорядоченный набор элементов. |
② | Список можно использовать как массив с нумерацией от нуля. Первый элемент не пустого списка будет всегда a_list[0]. |
③ | Последним элементом этого пятиэлементного списка будет a_list[4], потому что нумерация элементов в списке всегда начинается с нуля. |
④ | Используя отрицательный индекс, можно обратиться к элементам по их номеру от конца списка. Последний элемент не пустого списка будет всегда a_list[-1]. |
⑤ | Если вас сбивают с толку отрицательные индексы, то просто думайте о них следующим образом: a_list[-n] == a_list[len(a_list) - n]. В нашем примере a_list[-3] == a_list[5 - 3] == a_list[2]. |
Разрезание списка
a_list[0] — первый элемент списка a_list.
После того, как список создан, можно получить любую его часть в виде списка. Это называеться «slicing» — срез списка.
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list[1:3] ①
['b', 'mpilgrim']
>>> a_list[1:-1] ②
['b', 'mpilgrim', 'z']
>>> a_list[0:3] ③
['a', 'b', 'mpilgrim']
>>> a_list[:3] ④
['a', 'b', 'mpilgrim']
>>> a_list[3:] ⑤
['z', 'example']
>>> a_list[:] ⑥
['a', 'b', 'mpilgrim', 'z', 'example']