Числа в логическом контексте

Нулевые значения — ложь, ненулевые значения — истина.

Вы можете использовать числа в логическом контексте, например, в операторе 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']