Используйте функцию map () со строкой - PullRequest
0 голосов
/ 23 мая 2018

Есть ли способ использовать функцию map() со строкой вместо списка?Или функция map() предназначена только для работы со списками?

Например, игнорируя содержимое лямбда-функции, этот код возвращает объект карты, а не строку:

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

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
0 голосов
/ 23 мая 2018

Использование списков / генераторов предпочтительно (более Pythonic), чем map():

def rot_13(string):
    alph = 'abcdefghijklmnopqrstuwxyz'
    return ''.join(alph[(alph.find(i)+13) % len(alph)] for i in string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...