获取map()以在Python 3.x中返回一个列表

我试图将一个列表映射到十六进制,然后在别处使用列表。 在Python 2.6中,这很简单:

答: Python 2.6:

>>> map(chr, [66, 53, 0, 94])
['B', '5', 'x00', '^']

但是,在Python 3.1上,上面返回一个地图对象。

B: Python 3.1:

>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>

如何检索Python 3.x中的映射列表(如上面的A所示)?

或者,有没有更好的方法来做到这一点? 我的初始列表对象有大约45个项目和id想要将它们转换为十六进制。


做这个:

list(map(chr,[66,53,0,94]))

在Python 3+中,遍历迭代器的许多进程自己返回迭代器。 在大多数情况下,这最终会节省内存,并且应该让事情变得更快。

如果你最终要做的就是遍历这个列表,那么甚至不需要将它转换为列表,因为你仍然可以迭代map对象,如下所示:

# Prints "ABCD"
for ch in map(chr,[65,66,67,68]):
    print(ch)

你为什么不这样做:

[chr(x) for x in [66,53,0,94]]

这就是所谓的列表理解。 你可以在Google上找到大量的信息,但是这里是关于列表解析的Python(2.6)文档的链接。 不过,您可能对Python 3文档更感兴趣。


Python 3.5中新增和整洁:

[*map(chr, [66, 53, 0, 94])]

感谢其他解压缩概括

链接地址: http://www.djcxy.com/p/53577.html

上一篇: Getting a map() to return a list in Python 3.x

下一篇: Python List Comprehension Vs. Map