Python入门:如何多次循环遍历同一列表?(文本加扰项目场景)
自定义密钥文本加扰实现方案
既然你已经搞定了文本拆分为字符列表、准备好全字母数字列表,那咱们直接聚焦到加扰环节的核心逻辑——用自定义密钥关联三个列表的映射关系来实现加扰。
核心思路
咱们可以把加扰逻辑设计成字符映射替换,核心关联三个列表:
- 待加扰字符列表(比如你提到的
['m','o','n','t','y']) - 全字母数字基准列表(比如
['a','b',...,'z','0','1',...,'9']) - 用自定义密钥生成的打乱后的基准列表(这就是加扰的核心映射表)
简单来说:先找到待加扰字符在基准列表里的位置,再用打乱后的列表对应位置的字符替换它,加扰就完成了。
具体实现步骤
用密钥生成固定打乱的映射列表
要保证相同密钥能生成相同的打乱列表,咱们可以把自定义密钥作为随机种子,这样每次用同一个密钥,打乱结果完全一致:import random # 生成全小写字母+0-9的基准列表 base_chars = [chr(ord('a') + i) for i in range(26)] + [str(i) for i in range(10)] custom_key = "your_own_secret_key" # 替换成你自己的自定义密钥 # 用密钥锁定随机打乱的结果 random.seed(custom_key) scrambled_chars = base_chars.copy() random.shuffle(scrambled_chars)构建快速替换的映射字典
把基准列表和打乱后的列表一一配对,生成两个字典:一个用于加扰,一个用于后续解扰:# 加扰映射:基准字符 → 打乱后字符 scramble_map = {base: scrambled for base, scrambled in zip(base_chars, scrambled_chars)} # 解扰映射:打乱后字符 → 基准字符(需要还原时用) unscramble_map = {scrambled: base for base, scrambled in zip(base_chars, scrambled_chars)}执行加扰操作
遍历你的待加扰字符列表,用映射字典直接替换每个字符:# 示例待加扰字符列表 target_chars = ['m','o','n','t','y'] # 一键完成加扰 scrambled_result = [scramble_map[char] for char in target_chars] print(scrambled_result) # 输出加扰后的字符列表
实用小提示
- 如果你需要处理的文本里有特殊字符,要么提前过滤掉,要么把这些字符也加入基准列表一起打乱。
- 密钥越复杂,加扰的安全性越高,哪怕只是多几个大小写字母或者符号,效果都会不一样。
- 解扰时只需要用同一个密钥重新生成
unscramble_map,再反向替换就能还原原始文本。
内容的提问来源于stack exchange,提问作者Kusnan
相关产品推荐
相关产品推荐

