在数组中写入 pi 的百万位。输出:“<map object at 0x0000000005748EB8>”

Writing million digits of pi in an array. Output : "<map object at 0x0000000005748EB8>"

我试图在一个数组中写入 pi 的一百万位数字,并将每个数字作为数组的一个单独元素。这些值是从我的计算机的“.txt”文件中加载的。我看过类似的问题here。借助这个写的,我的代码是:

import numpy as np
data = np.loadtxt('pi.txt')
print(map(int, str(data)))

但输出是这样的:

<map object at 0x0000000005748EB8>

Process finished with exit code 0

这是什么意思?

Python 版本 3 的一些操作变为 "lazy",例如映射现在不是 return 值列表,而是一个生成器,它将在您迭代时计算值超过它。

一个简单的解决方案是将代码更改为

print(list(map(int, str(data))))

这是一个相当大的语义变化,当然自动 2->3 迁移工具会处理它......如果你在 Python 2 中编程一段时间但是会继续咬人你好久了。

我不确定为什么认为此更改是个好主意。

map 在 Python 3 中会给你一个生成器,而不是列表,但在 python 2 中它会给出一个列表。 您给出的堆栈溢出 link 指的是 Python 2,您在 python 3.

中编写代码

你可以参考这些ideonelink

python 2 https://ideone.com/aAhvLD

python 3 https://ideone.com/MjA5nj

所以如果你想打印列表,你可以这样做

print(list(map(int, str(data))))