在数组中写入 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))))
我试图在一个数组中写入 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))))