将 map() 函数与字符串一起使用

ber*_*c96 6 python string lambda list python-3.x

有没有办法将map()函数与字符串而不是列表一起使用?或者该map()函数仅适用于列表?

例如,忽略 lambda 函数的内容,此代码返回一个映射对象而不是字符串:

def rot_13(string):
    alph = 'abcdefghijklmnopqrstuwxyz'
    return str(map(lambda i: alph[(alph.find(i)+13) % len(alph)], string))
Run Code Online (Sandbox Code Playgroud)

AKX*_*AKX 8

使用列表/生成器推导式比(更Pythonic)更好map()

def rot_13(string):
    alph = 'abcdefghijklmnopqrstuwxyz'
    return ''.join(alph[(alph.find(i)+13) % len(alph)] for i in string)
Run Code Online (Sandbox Code Playgroud)


Net*_*ave 6

python3map返回一个生成器,所以你必须使用它,使用str.join是最简单的方法:

"".join(map(lambda i: alph[(alph.find(i)+13) % len(alph)], string))
Run Code Online (Sandbox Code Playgroud)

它类似于以下代码:

my_string = ""
for l in map(lambda i: alph[(alph.find(i)+13) % len(alph)], string):
    my_string += l
Run Code Online (Sandbox Code Playgroud)