Я не знаю, что такое block
, но в целом многие вещи Python теперь возвращают генераторы вместо списков.Я просто что-то придумал, чтобы завершить ваш пример.
blocks = [1,2,24,5]
ciphertext = ([((G**block)*([choice(list(range(n)))]**n))%(n**2)] for block in blocks)
cipher text
Это возвращает <generator object <genexpr> at 0x7fcf3c5403c0>
или подобное.На самом деле, это особенность!Теперь вам не нужно хранить весь список в памяти, и вы можете перебирать его в любое удобное для вас время.
Однако, если вам нужен список, вы можете сделать это двумя способами.
list(cipher text)
[block^2 for block in blocks]
Вы использовали скобки, а не скобки (в американском английском);Паренс делает генератор.Надеюсь, это поможет.
В отдельном примечании вашему коду нужно много дополнительных вещей для работы.Генератор, который я только что создал, не замечает, что G
не определен, и что n
в настоящее время является функцией, а не целым числом!Это более простой пример того же.
blocks = [1,2,24,5]
ciphertext = (block^2 for block in blocks)
print ciphertext
list(cipher text)
<generator object <genexpr> at 0x7fcf3c540410>
[1, 4, 576, 25]
Также обратите внимание, что в Sage вам разрешено делать x^2
вместо x**2
.Наслаждайся Мудрецом!