Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 [ 5 ] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

3.1.4 Списки

В Python имеется несколько типов данных, используемых для группирования вместе нескольких значений. Самым гибким является список (list), который может быть записан в виде списка значений (элементов), разделенных запятыми, заключенного в квадратные скобки. Совсем не обязательно, чтобы элементы списка были одного типа.

>>> a = [spam, eggs, 100, 1234] >>> a

[spam, eggs, 100, 1234]

Как и для строк, для списков нумерация индексов начинается с нуля. Для списка можно получить срез, объединить несколько списков и так далее:

>>> a[0]

spam

>>> a[3] 1234

>>> a[-2] 100

>>> a[1:-1]

[eggs, 100]

>>> a[:2] + [bacon, 2*2] [spam, eggs, bacon, 4] >>> 3*a[:3] + [Boe!]

[spam, eggs, 100, spam, eggs, 100, spam, eggs, 100, Boe!]

В отличие от строк, которые неизменяемы (immutable), существует возможность изменения отдельных элементов списка:

>>> a

[spam, eggs, 100, 1234]

File "<stdin>", line 1, in ? UnicodeError: ASCII encoding error: ordinal not in

range(128)

Метод encode() позволяет преобразовывать строки Unicode в обычные строки, содержащие текст в указанной кодировке:

>>> s.encode("KOI8-R")

\3 60\322\311\327\305\324

>>> s.encode("UTF-8")

\32 0\237\321\2 0 0\32 0\27 0\32 0\2 62\32 0\2 65\321\2 02



>>>

q = [2, 3]

>>>

p = [1, q, 4]

>>>

len(p)

>>>

p[1]

>>>

p[1][0]

>>>

p[1].append(xtra)

>>>

[2, 3, xtra], 4]

>>>

3, xtra]

Как Вы уже, наверное, догадались, метод append() добавляет элемент в конец списка. Заметьте, что p [1] и q на самом деле ссылаются на один и тот же объект!

>>> a[2] = a[2] + 23 >>> a

[spam, eggs, 123, 1234]

Присваивание срезу также возможно, и это может привести к изменению размера списка:

>>> # Заменить несколько элементов: ... a[0:2] = [1, 12]

>>> a

[1, 12, 123, 1234]

>>> # удалить: ... a[0:2] = []

>>> a

[123, 1234]

>>> # Вставить:

... a[1:1] = [bletch, xyzzy]

>>> a

[123, bletch, xyzzy, 1234]

>>> # Вставить копию самого себя в начало:

>>> a[:0] = a >>> a

[123, bletch, xyzzy, 1234, 123, bletch, xyzzy,

1234]

Встроенная функция len() также применима и к спискам:

>>> len(a)

Списки могут быть вложенными (списки, содержащие другие списки), например:



1 1 2 3 5 8

Этот пример знакомит с несколькими новыми особенностями.

Первая строка содержит множественное присваивание (multiple assignment): переменным a и b одновременно присваиваются новые значения 0 и 1. В последней строке оно используется снова, демонстрируя, что выражения в правой части вычисляются до того как будет осуществлено присваивание. Выражения в правой части вычисляются слева направо.

Цикл while выполняется пока условие (здесь: b < 10) является истинным. В Python, как и в С, любое ненулевое значение является истиной, ноль - ложь. В качестве условия может служить также строка, список - на самом деле любая последовательность. Последовательность с ненулевой длиной является истиной, пустая - ложью. Проверка, использованная в примере, является простым сравнением. Стандартные операторы сравнения записываются так же, как в С: <, >, ==, <= (меньше или равно), >= (больше или равно) и != (не равно).

Тело цикла записано с отступом: отступы используются в языке Python для записи группирующих инструкций. Интерпретатор (пока) не предоставляет разумных средств редактирования вводимых строк, поэтому Вам необходимо нажимать клавишу табуляции или пробела для каждой строки с отступом. На практике Вы будете готовить более сложный ввод для Python с помощью текстового редактора, большинство из которых позволяют делать сдвиг автоматически. Когда составная инструкция вводится интерактивно, за ним должна следовать пуста строка, как признак завершения (поскольку синтаксический анализатор не может угадать, когда Вы ввели последнюю строку). Заметим, что сдвиг строк внутри блока должен быть одинаковым.

3.2 Первые шаги к программированию

Конечно, мы можем использовать Python для более сложных задач, чем "два плюс два". Например, можно вывести начало ряда Фибоначчи:

>>> # Ряд Фибоначчи:

... # сумма двух предыдущих элементов определяет

... # следующий

... a, b = 0, 1

>>> while b < 10:

... print b

... a, b = b, a+b



0 1 2 3 4 [ 5 ] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145