使用带有字符串

时间:2018-05-23 15:25:30

标签: python string python-3.x list lambda

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

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

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

2 个答案:

答案 0 :(得分:1)

使用列表/生成器理解更好(更多Pythonic)到map()

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

答案 1 :(得分:0)

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

"".join(map(lambda i: alph[(alph.find(i)+13) % len(alph)], string))

它与此代码类似:

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