Python 不使用maketrans()的高效翻译函数

Python 不使用maketrans()的高效翻译函数,python,function,translate,Python,Function,Translate,我想知道下面的代码是否是在不使用内置maketrans()方法的情况下对字符串进行编码/解码的有效方法。使用.index方法是否会减慢进程?有更好的方法吗?谢谢 alpha1 = ['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'] def decode(text, shift): alpha2 = alpha

我想知道下面的代码是否是在不使用内置maketrans()方法的情况下对字符串进行编码/解码的有效方法。使用.index方法是否会减慢进程?有更好的方法吗?谢谢

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

def decode(text, shift):
    alpha2 = alpha2 = alpha1[shift:] + alpha1[:shift]   
    encoded = ''
    for i in text:
        if i in alpha1:
            encoded += alpha2[alpha1.index(i)]
        else:
            encoded += i
return encoded
鹰眼将从
导入
源代码中识别出这一点。我一直认为这是一种进行rot(x)编码的好方法

编辑:这也考虑了大写字母,如果您不希望这样,那么您可以将其减少为:

def decode(text, shift):
    d = {}
    for i in range(26):
        d[chr(i+97)] = chr((i+shift) % 26 + 97)
    return "".join([d.get(c, c) for c in text])
def decode(text, shift):
    d = {}
    for i in range(26):
        d[chr(i+97)] = chr((i+shift) % 26 + 97)
    return "".join([d.get(c, c) for c in text])