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

Python生成Vigenère密码表时Array.append覆盖原有条目问题

问题原因
  • Python 中列表是引用类型,直接赋值、传参传递的都是列表的内存地址,不是独立的列表副本。
  • 现有代码中的cycleAlphabet函数直接在传入的原列表上执行remove、append修改操作,返回的也是原列表的引用,没有生成新的独立列表。
  • 循环执行时,每次取vCipherChart[i]传入函数,本质是直接修改了已经存入vCipherChart的上一行数据,后续追加的newAlphabet和之前所有行指向的都是同一个内存地址的列表。25次循环结束后,所有条目都被改成了最后一次移位完成的Z开头序列,因此输出结果全是重复的Z开头行。
修复方案

调整cycleAlphabet的逻辑,不修改传入的原列表,基于原列表生成新的移位后列表返回即可,修复后的完整可运行代码如下:

def cycleAlphabet(alphabet):
    # 生成移位后的新列表,不改动传入的原列表
    return alphabet[1:] + [alphabet[0]]

def generateCipherChart():
    base_alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
                     "N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    vCipherChart = [base_alphabet.copy()]
    for i in range(25):
        next_line = cycleAlphabet(vCipherChart[i])
        vCipherChart.append(next_line)
    return vCipherChart

print(generateCipherChart())
  • 修复后输出的第一行为A开头的基础字母序列,之后每一行依次左移一位,最后一行为Z开头的序列,完全符合Vigenère密码表的结构要求。
  • 原代码开头的import array无实际作用,可直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:01:18