需要 Vigenere cipher 的幫助才能從關鍵字生成密鑰,希望在回圈旋轉后非常簡單地做到這一點,以獲得與訊息相同的關鍵字:
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 向下移動而不取出“a”來匹配串列 1 的間距?換句話說,如何在不洗掉元素本身的情況下根據串列 1“正確”推送串列 2 的每個元素?
感謝任何幫助!非常感謝!
uj5u.com熱心網友回復:
您可以使用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']
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/373307.html
上一篇:在多個條件下從串列中提取字串
