如何在一行中使用列表理解来重新排列for循环和条件



这是代码,所以我想使用列表理解在一行内优化此代码,我该怎么做?

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

coded_word = []
var = 'hello'
for i in var:
pos = alphabet.index(i) + 3
if pos > 24 :
pos %= 25
coded_word.append(alphabet[pos])

coded_word
# ['k', 'h', 'o', 'o', 'r']

不需要列表或列表理解。为了提高效率,请使用python字符串方法:具有str.maketransstr.translate:的转换表

alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphabet2 = alphabet[3:]+alphabet[:3]
# 'defghijklmnopqrstuvwxyzabc'
trans = str.maketrans(alphabet, alphabet2)
var = 'hello'
var.translate(trans)

输出:'khoor'

最新更新