0
У меня есть код для создания такого словаря.Учет словаря для повторных назначений
z=1
for r in xrange(m):
D[z]=r
z=(z*g)%p
Как я могу преобразовать это в понимание словаря?
У меня есть код для создания такого словаря.Учет словаря для повторных назначений
z=1
for r in xrange(m):
D[z]=r
z=(z*g)%p
Как я могу преобразовать это в понимание словаря?
Внутри вашей петли значение z
, которое вы используете в качестве ключа в словаре, всегда g**r % p
. Это позволяет избавиться от z
переменной и вычислить ключи непосредственно от r
(и g
и p
):
D = {g**r % p: r for r in xrange(m)}
В основном я хочу, чтобы запустить цикл как можно быстрее. Повторное вычисление g ** r% p занимает больше времени, чем цикл. Вы знаете какой-либо метод? –
Хмм, я не думаю, что есть какой-либо способ сделать вычисление z = z * g% p в выражении. Возможно, вы могли бы написать функцию генератора, чтобы сделать это, а затем «zip» этот генератор вместе с вашим «xrange» в понимании? Если производительность важнее, чем читаемость, я бы просто придерживался цикла, который у вас есть. – Blckknght