Python 不使用maketrans()的高效翻译函数
我想知道下面的代码是否是在不使用内置maketrans()方法的情况下对字符串进行编码/解码的有效方法。使用.index方法是否会减慢进程?有更好的方法吗?谢谢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
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])