Читать «Язык программирования Python» онлайн - страница 21
Роман Авриевич Сузи
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
Дело в том, что список lst
содержит ссылки на один и тот же список! Для того чтобы действительно размножить список, необходимо применить функцию copy()
из модуля copy
:
from copy import copy
lst1 = [0, 0, 0]
lst = [copy(lst1) for i in range(3)]
print lst
lst[0][1] = 1
print lst
Теперь результат тот, который ожидался:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 0, 0], [0, 0, 0]]
В модуле copy
есть еще и функция deepcopy()
для глубокого копирования, при которой объекты копируются на всю возможную глубину, рекурсивно.
Модули math и cmath
В этих модулях собраны математические функции для действительных и комплексных аргументов. Это те же функции, что используются в языке C. В таблице ниже даны функции модуля math
. Там, где аргумент обозначен буквой z
, аналогичная функция определена и в модуле cmath
.
Функция или константа | Описание |
---|---|
acos(z) | арккосинус z |
asin(z) | арксинус z |
atan(z) | арктангенс z |
atan2(y,x) | atan(y/x) |
ceil(x) | наименьшее целое, большее или равное x |
cos(z) | косинус z |
cosh(x) | гиперболический косинус x |
e | константа e |
exp(z) | экспонента (то есть, e**z ) |
fabs(x) | абсолютное значение x |
floor(x) | наибольшее целое, меньшее или равное x |
fmod(x,y) | остаток от деления x на y |
frexp(x) | возвращает мантиссу и порядок x как пару (m, i) , где m — число с плавающей точкой, а i — целое, такое, что x = m * 2.**i . Если 0 , возвращает (0,0) , иначе 0.5 <= abs(m) < 1.0 |
hypot(x,y) | sqrt(x*x + y*y) |
ldexp(m,i) | m * (2**i) |
log(z) | натуральный логарифм z |
log10(z) | десятичный логарифм z |
modf(x) | возвращает пару (y,q) — целую и дробную часть x . Обе части имеют знак исходного числа |
pi | константа π |
pow(x,y) | x**y |
sin(z) | синус z |
sinh(z) | гиперболический синус z |
sqrt(z) | корень квадратный от z |
tan(z) | тангенс z |
tanh(z) | гиперболический тангенс z |
Модуль random
Этот модуль генерирует псевдослучайные числа для нескольких различных распределений. Наиболее используемые функции:
random() | Генерирует псевдослучайное число из полуоткрытого диапазона [0.0, 1.0) . |
choice(s) | Выбирает случайный элемент из последовательности s . |
shuffle(s) | Размешивает элементы изменчивой последовательности s на месте. |
randrange([start,] stop[, step]) | Выдает случайное целое число из диапазона range(start, stop, step) . Аналогично choice(range(start, stop, step)) . |
normalvariate(mu, sigma) | Выдает число из последовательности нормально распределенных псевдослучайных чисел. Здесь mu — среднее, sigma — среднеквадратическое отклонение (sigma > 0 ) |