【问题标题】:map does not seem to iterate [duplicate]地图似乎没有迭代[重复]
【发布时间】:2019-05-16 07:05:50
【问题描述】:

我是 python 编码的新手,这是我给自己的一项任务,以了解这门语言。

我正在尝试返回与 DNA 字符串相反的字符串:

  • 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>,为什么不是字符串?

【问题讨论】:

  • 我得到了正确和预期的输出。你可以试试output = list(map(repl, s)),因为它是python 3
  • @vks 我得到的只是<map object at 0x02A9F8D0>。会不会是任何设置都弄乱了输出?
  • @TimStack 这不是 “无输出”,正如您在问题中所声称的那样。
  • @TimStack 您需要将listmap 一起使用,并且您说没有输出,这会造成更多混乱。
  • @vks 使用 list不会给我想要的输出

标签: python python-3.x pycharm map-function


【解决方案1】:

map 函数是惰性的。试试这个output = list(map(repl, s))

或者如果你想要字符串输出而不是列表,output = ''.join(map(repl, s))

【讨论】:

猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多