有两个列表 - 对于列表 1 中的任何空白,将元素在列表 2 中向下移动以匹配而不删除元素?

Have two lists - for any whitespace in list 1, move element down in list 2 to match without removing element?

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

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

如何在不删除“a”的情况下通过将列表 2 的索引 1 向下移动来匹配列表 1 的间距?换句话说,如何在不删除元素本身的情况下基于列表 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']