我有这个功能,但我不熟悉错误或如何纠正错误。
def intify(file1):
numbers=range(0,10)
strnum=[]
for x in numbers:
strnum.append(str(x))
number1=[]
for line in file1:
for split in line.split(' '):
number1.append(split)
listnum=[]
for x in number1:
if x[0] in strnum:
listnum.append(x)
w=map(float, listnum)
#return w
print(w)
错误地图对象位于0x275b990
答案 0 :(得分:5)
错误地图对象位于0x275b990
这不是错误 - 您只需打印由map
返回的迭代器的地址。您可以打印list(w)
以确保一切正常。当然,您不应该返回 list(w)
,因为它不必要且费用昂贵。
答案 1 :(得分:4)
在Python 3+中,map()
是一个类,而不是一个函数(documentation here)。可以迭代map
实例,并且仅在需要时处理序列中的每个项目(“延迟评估”)。这样就不需要创建实际列表,节省时间和内存,如果你不需要所有项目(例如,当你达到某个值时停止处理),那么你也可以保存一堆函数调用。一般来说,您需要使用map()
执行类似的操作:
for num in map(float, listnum):
print(num) # or do something else
如果你真的想要一个实际的列表,只需将其转换为一个:list()
构造函数接受任何可迭代的,包括map()
实例:
w = list(map(float, listnum))
打印map
对象时所看到的不是错误,而是对象的默认Python显示(repr()
)。代码是十六进制对象的id()
,在CPython中是其内存地址;这主要用于区分一个实例与其他实例。你会看到很多,所以要习惯它。