карта не повторяется

Я новичок в программировании на Python, и это задание, которое я дал себе, чтобы узнать язык.

Я пытаюсь вернуть строку, противоположную строке ДНК:

  • T -> A
  • A -> T
  • C -> G
  • G -> C

Я написал код ниже, но, похоже, он не повторяется. Я поместил строку print(x) в функцию, чтобы проверить, проходит ли она вообще через строку, но строка не возвращается.
Ошибки также не возвращаются.

s = "AACCGGCCAA"


def repl(x):
    print(x)
    if x == "A": return "T"
    elif x == "T": return "A"
    elif x == "C": return "G"
    elif x == "G": return "C"

output = map(repl, s)


print(output)

Ожидаемый результат:
TTGGCCGGTT

Я получаю только <map object at 0x02A9F8D0>, почему не строку?


person Tim Stack    schedule 16.05.2019    source источник
comment
Я получаю правильный и ожидаемый результат. Вы можете попробовать output = list(map(repl, s)), так как это python 3   -  person vks    schedule 16.05.2019
comment
@vks все, что я получаю, это <map object at 0x02A9F8D0>. Может быть, какие-то настройки портят результат?   -  person Tim Stack    schedule 16.05.2019
comment
@TimStack, который не нет вывода, как вы заявили в вопросе.   -  person jonrsharpe    schedule 16.05.2019
comment
@TimStack вам нужно использовать list с map, и вы сказали, что нет вывода, что создает большую путаницу.   -  person vks    schedule 16.05.2019
comment
@vks Использование list не даст мне желаемый результат   -  person Tim Stack    schedule 16.05.2019


Ответы (1)


map функция ленивая. Попробуйте это output = list(map(repl, s)).

Или, если вы хотите выводить строку вместо списка, output = ''.join(map(repl, s)).

person Praveenkumar    schedule 16.05.2019
comment
Ура, это сделало свое дело. Почему мне нужно добавить ''.join, чтобы получить строку вывода? - person Tim Stack; 16.05.2019
comment
''.join выполняет итерацию по элементам, которые возвращает map, и объединяет их, используя значение между одинарными кавычками. docs.python.org/3/library/functions.html#map. docs.python.org/3/library/stdtypes.html#str. присоединиться - person Praveenkumar; 16.05.2019
comment
Имеет смысл. Я ожидал, что карта вернет строку сама по себе, но я полагаю, что она ограничена словарем и поэтому не вернет строку ... что-то в этом роде - person Tim Stack; 16.05.2019