我试图将一个列表映射为十六进制,然后在其他地方使用该列表。在python 2.6中,这很简单:
答:Python 2.6:
>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']
然而,在Python 3.1中,上述函数返回一个map对象。
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)
在python3中,除了上述答案之外,我们可以简单地从一个映射as创建一个结果值列表
li = []
for x in map(chr,[66,53,0,94]):
li.append(x)
print (li)
>>>['B', '5', '\x00', '^']
我们可以通过另一个例子来概括,在map上的操作也可以以类似的方式处理,就像在正则表达式问题中一样,我们可以编写函数来获得map的项列表,同时获得结果集。前女友。
b = 'Strings: 1,072, Another String: 474 '
li = []
for x in map(int,map(int, re.findall('\d+', b))):
li.append(x)
print (li)
>>>[1, 72, 474]