高效的翻译功能,无需使用maketrans()

时间:2014-01-02 15:48:32

标签: 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 = alpha2 = alpha1[shift:] + alpha1[:shift]   
    encoded = ''
    for i in text:
        if i in alpha1:
            encoded += alpha2[alpha1.index(i)]
        else:
            encoded += i
return encoded

1 个答案:

答案 0 :(得分:1)

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

鹰眼将从import this源代码中识别出来。我一直以为这是做腐(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])