【问题标题】:Appending an item to a list with out the [ ] brackets将项目附加到不带 [ ] 括号的列表
【发布时间】:2019-06-11 17:09:45
【问题描述】:

我正在尝试编写 Vigenere 密码。我正在构建一个二维列表

[[a,b,c,d], [b,c,d,a], [c,d,a,b], [d,a,b,c]]

除了我从前面切片并移动到后面的部分以[ ] 括号结束外,我可以正常工作。例如。

[[a,b,c,d], [b,c,d,[a]], [c,d,[a,b]], [d,[a,b,c]]

我的代码:

维吉尼密码

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']
vigenere = []

for letter in alphabet:
    if letter == 'a': #ie if its the start, no need for anything fancy
        vigenere.append(alphabet[alphabet.index(letter):len(alphabet)])
    else:
        slicer = alphabet[alphabet.index(letter):len(alphabet)]
        slicer.append(alphabet[0:alphabet.index(letter)])
        vigenere.append(slicer)

print(vigenere)

【问题讨论】:

  • 您可以在此处使用extend 而不是append。您可能还想查看itertools.cycle,它为您提供了一个循环列表迭代器

标签: python list slice vigenere


【解决方案1】:

在您的else 块中,slicer.append(alphabet[0:alpha.index(letter)]) 将在slicer 列表中附加一个列表,这是您遇到问题的地方。请改用slicer.extend(...)

【讨论】:

  • 谢谢你,成功了!