是否可以访问列表推导中生成的前一个元素.
我正在研究一些玩具加密的东西.将密钥作为任意大整数,初始化值和元素列表作为要加密的消息.我需要使用先前的加密元素和密钥对每个元素进行xor.以下循环可以.
previous = initialization_value
cipher = []
for element in message:
previous = element ^ previous ^ key
cipher.append(previous)
Run Code Online (Sandbox Code Playgroud)
我觉得应该可以将其转换为列表理解,但我不确定如何处理初始值或访问生成的先前值.是否有可能,如果是这样,理解力是什么?
Eli*_*ght 16
用列表理解来做这个没有好的Pythonic方法.考虑列表推导的最佳方式是替换map和filter.换句话说,无论何时需要列表,都可以使用列表推导
使用其元素作为某些表达式的输入(例如,对元素进行平方)
根据某些条件删除它的一些元素
这些东西的共同之处在于它们每次只能查看一个列表元素.这是一个很好的经验法则; 即使你理论上可以将你展示的代码写成列表理解,它也会很笨拙和不熟悉.
小智 5
作为生成器:
def cypher(message, key, seed):
for element in message:
seed = element ^ seed ^ key
yield seed
list(cypher(message, key, initial_seed))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7859 次 |
| 最近记录: |