2015-04-02 3 views

ответ

1

Внутри вашей петли значение z, которое вы используете в качестве ключа в словаре, всегда g**r % p. Это позволяет избавиться от z переменной и вычислить ключи непосредственно от rg и p):

D = {g**r % p: r for r in xrange(m)} 
+0

В основном я хочу, чтобы запустить цикл как можно быстрее. Повторное вычисление g ** r% p занимает больше времени, чем цикл. Вы знаете какой-либо метод? –

+0

Хмм, я не думаю, что есть какой-либо способ сделать вычисление z = z * g% p в выражении. Возможно, вы могли бы написать функцию генератора, чтобы сделать это, а затем «zip» этот генератор вместе с вашим «xrange» в понимании? Если производительность важнее, чем читаемость, я бы просто придерживался цикла, который у вас есть. – Blckknght

Смежные вопросы