我有一个 map 对象,我想将其打印为列表,但之后继续用作 map 对象。实际上我想打印长度,所以我转换到列表,但如果我只打印内容,也会出现问题,如下所示:
print("1",my_map)
print("1",list(my_map))
print("2",my_map)
print("2",list(my_map))
这给了我以下输出。
1 <map object at 0x7fd2962a75f8>
1 [(1000.0, 1.0, 0.01, 0.01, 0.01, 0.01, 0.01)]
2 <map object at 0x7fd2962a75f8>
2 []
为什么会发生这种情况以及如何避免它继续使用 map 及其内容?
最佳答案
map
对象是调用 map()
返回的生成器内置功能。它旨在仅被迭代(例如,通过将其传递给 list()
)一次,然后被消耗。尝试第二次对其进行迭代将导致空序列。
如果要保存映射值以供重复使用,则需要将 map
对象转换为其他序列类型,例如 list
和 保存结果。所以改变你的:
my_map = map(...)
至
my_map = list(map(...))
之后,上面的代码应该按您的预期工作。
关于python-3.x - python : casting map object to list makes map object empty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60322015/