You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vigenere密码密钥对齐:按列表1空格位置右移列表2元素不删除内容

实现方案

核心逻辑

  • 初始化一个指针指向原始扩展后密钥列表(list2)的起始位置
  • 遍历明文列表(list1)的每一个元素:
    • 若当前明文元素为空格,新密钥列表对应位置直接插入空格,指针位置不变
    • 若当前明文元素为非空格,取指针指向的list2元素插入新密钥列表,指针向后移动一位

该方案既保证了空格位置和明文完全匹配,也不会打乱原有密钥字符的顺序,符合Vigenère密码密钥对齐明文的场景需求。如果需要保留list2的所有原始字符,只需要在遍历结束后追加list2剩余未使用的元素即可。

Python代码实现

message = "i love my horse"
keyword = "mare"
list1 = ['i', ' ', 'l', 'o', 'v', 'e', ' ', 'm', 'y', ' ', 'h', 'o', 'r', 's', 'e']
list2 = ['m', 'a', 'r', 'e', 'm', 'a', 'r', 'e', 'm', 'a', 'r', 'e', 'm', 'a', 'r']

ptr = 0
new_key = []
for char in list1:
    if char == ' ':
        new_key.append(' ')
    else:
        new_key.append(list2[ptr])
        ptr += 1

# 如需保留list2所有原始字符,取消下行注释即可
# new_key.extend(list2[ptr:])

print(new_key)

运行结果

['m', ' ', 'a', 'r', 'e', 'm', ' ', 'a', 'r', ' ', 'e', 'm', 'a', 'r', 'e']

内容的提问来源于stack exchange,提问作者Joy Brock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:36:07