У меня есть список v
на листе sageMath, подобный этому
v = [3, 5, 22, 35, 230, 308, 683, 6546]
m = 14002
a = 185
а затем я выполняю вычисления модуля для каждого числа в списке
for i in range(0, len(v)):
v[i] = mod(v[i] * a, m)
моя проблема заключается в том, что когда я позже хочу выполнить другие вычисления со списком, функция mod() каким-то образом все еще запоминается списком. Я пытался скопировать список в другой список, это не работает.
Например, этот цикл ниже возвращает 6714
, но должен возвращать 20716
и 20716 % 14002 = 6714
for i in range(len(v)):
c = c + v[i]
Я решил проблему, выполнив еще один расчет модуля на v, например
for i in range(len(v)):
v[i] = mod(v[i], next_prime(m*m))
Мой вопрос в том, есть ли лучший способ решить проблему
v
, выполнивx = v
, гдеx
- это переменная для копирования. И, как известно многим опытным питонистам, это не работает. - person Christian Dean   schedule 01.03.2017v
менялись, зачем вы их меняете? Вместо этого вы должны создать новый список, содержащий результаты вычислений модуля. Хороший способ сделать это — использовать понимание списка. - person PM 2Ring   schedule 01.03.2017