【问题标题】:Trouble with map()地图()的问题
【发布时间】:2012-04-11 13:25:31
【问题描述】:

我正在尝试使用 map 函数转换列表的值,但我得到了一个奇怪的结果。

s = input("input some numbers: ")
i = map(int, s.split())
print(i)

给予:

input some numbers: 4 58 6
<map object at 0x00000000031AE7B8>

为什么不返回 ['4','58','6']?

【问题讨论】:

  • 你试过 print(str(i)) 吗?
  • 按预期为我工作,你能给我们一些背景信息吗? Python版本?您使用的是 2.x 还是 3.x?
  • 我使用的是 python 3.2.2,此时没有上下文。

标签: python


【解决方案1】:

您使用的是 python 3,它返回生成器而不是列表。

在将变量分配给映射生成器后,对变量调用 list(x)

【讨论】:

  • 值得注意的是,您还可以使用列表推导作为替代方案 - [int(x) for x in s.split()]。这很好而且可读,虽然在这个(简单的)案例中,我不会说地图是不可读的。
【解决方案2】:

您需要执行list(i) 才能获得['4','58','6'],因为python 3 中的map 返回的是生成器而不是列表。 此外,正如 Lattyware 在第一个答案的评论中指出的那样,您最好这样做:

i = [int(x) for x in s.split()]

【讨论】:

  • 为什么? jamylak's answer 解释得更好。
  • 他在我面前张贴并解释了它。所以我没有:p
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多