Анимация
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

18.5. bisect - поддержание последовательностей в ... 251

choice(seq)

Выбирает случайный элемент из непустой последовательности seq и возвращает его.

При импортировании модуль whrandom создает экземпляр класса whrandom и делает его методы seed() , random() , uniform() , randrange() , randint() и choice() доступными в глобальном пространстве имен модуля. Заметим, что использование отдельных экземпляров класса whrandom приведет к использованию независимых последовательностей псевдослучайных чисел.

Методы экземпляров whrandom дают случайные числа с равномерным распределением. Если Вам необходимо получить случайные числа с другими распределениями, воспользуйтесь функциями, определенными в модуле random.

18.5 bisect - поддержание последовательностей в сортированном состоянии

Этот модуль предоставляет возможность поддерживать последовательности в сортированном состоянии без необходимости в сортировке после каждого добавления элемента, что особенно важно для больших списков, сравнение элементов которого является дорогой операцией. Для выполнение этой задачи модуль реализует алгоритм поиска путем деления пополам.

Модуль bisect предоставляет следующие функции:

bisect( list , item [, lo [, hi ]])

Находит место в списке (индекс), в которое необходимо вставить item, для того, чтобы сохранить список в сортированном состоянии. Аргументы lo и hi могут быть использованы для указания подмножества списка, которое следует принимать в рассмотрение. Возвращаемое значения подходит для использования в качестве первого аргумента метода list.insert().

insort( list , item [, lo [, hi ]])

Вставляет item в список list, сохраняя сортированное состояние списка. Эквивалентно list.insert(bisect.bisect(list, item, lo, hi), item) .

Функция bisect() может быть полезна для распределения данных по категориям. В следующем примере эта функция используется для определения оценки (обозначаемой буквой, как это принято во многих западных странах) за экзамен по общему количеству набранных баллов. Пусть 85 и более баллов соответствует оценке A , 75-84 - B и т. д.:

>>> grades = "FEDCBA"

>>> breakpoints = [30, 44, 66, 75, 85]



>>> grade(66) C

>>> map(grade, [33, 99, 77, 44, 12, 88]) [E, A, B, D, F, A]

18.6 array - эффективные массивы чисел

Этот модуль определяет новый тип объектов array, эффективно реализующий массивы значений основных типов: символов, целых и вещественных чисел. Массивы ведут себя аналогично спискам с одним исключением: все сохраняемые в массиве объекты должны быть одного определенного типа. Тип элементов определяется при создании массива одним из следующих символов, идентифицирующих тип:

Символ

Тип языка C

Минимальный размер в байтах

char (символ)

signed char (знаковое целое)

unsigned char (беззнаковое целое)

signed short (знаковое целое)

unsigned short (беззнаковое целое)

signed int (знаковое целое)

unsigned int (беззнаковое целое)

signed long (знаковое целое)

unsigned long (беззнаковое целое)

float (вещественное число)

double (вещественное число)

Реальное представление значений зависит от архитектуры машины. Используемый размер доступен через атрибут itemsize массивов. При извлечении элементов из массивов, при конструировании которых использовался символ L или I, значение представляется типом long int языка Python, так как в рамках типа int не может быть представлен весь диапазон чисел типов unsigned int и unsigned long.

array( typecode [, initializer])

Создает новый объект-массив, тип элементов которого определяется символом typecode, инициализирует элементами последовательности initializer (должен быть списком или обычной строкой; initializer передается методу fromlist() или fromstring() ) и возвращает его.

>>> from bisect import bisect >>> def grade(total):

... return grades[bisect(breakpoints, total)]



18.6. array - эффективные массивы чисел 253

ArrayType

Объект типа, соответствующий объектам, которые возвращает функция array(). Массивы имеют следующие атрибуты данных и методы:

typecode

Символ, определяющий тип элементов массива. itemsize

Размер в байтах внутреннего представления одного элемента массива.

append( x)

Добавляет x в конец массива.

buffer info()

Возвращает кортеж с адресом и длиной в байтах буфера, используемого для хранения содержимого массива. Возвращаемые значения действительны до тех пор, пока массив существует и к нему не применяются операции, изменяющие длину.

byteswap()

Изменяет порядок следования байтов для всех элементов массива. Эта операция может быть выполнена только для значений, внутреннее представление которых имеет размер 1, 2, 4 или 8 байт. Метод может быть полезен при чтении данных из файла, который был записан на машине с другим порядком следования байтов.

count( x)

Возвращает число элементов массива равных x. extend( a)

Добавляет элементы массива a в конец массива.

fromfile(f, n) read(f, n)

Считывает и добавляет в конец массива n элементов (машинное представление) из файла, представленного файловым объектом (встроенного типа file) f. Если файл содержит меньше элементов, чем n, генерируется исключение EOFError, но все прочитанные к этому времени элементы добавляются в массив.

Имя read() присутствует для совместимости со старыми версиями. fromlist( list )

Добавляет в конец массива элементы из списка list . Это эквивалентно инструкции for x in list: a.append(x) с одним исключением: если список содержит элементы неверного типа, массив остается без изменений.

fromstring( s)

Добавляет в конец массива элементы из строки s, интерпретируя строку как машинное представление значений (то есть аналогично тому, как это делает метод fromfile() ). Число символов в строке должно быть кратным размеру элементов массива.



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