有两个列表——对于列表1中的任何空白,在不删除元素的情况下,将列表2中的元素下移以匹配



需要Vigenere密码帮助从关键字生成密钥,希望在循环旋转后非常简单地完成此操作,以获得与消息相同的关键字长度:

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']

如何通过向下移动列表2的索引1来匹配列表1的间距;a";?换言之,我该如何推动";右";基于列表1的列表2的每个元素,而不删除该元素本身?

感谢您的帮助!非常感谢!

您可以使用itertools.cycle在列表理解的帮助下重复生成关键字的字母:

message = "i love my horse"
keyword = "mare"
from itertools import cycle
c = cycle(keyword)
list2 = [' ' if l == ' ' else next(c) for l in message]

输出:

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

最新更新