错误< 0x275b990> - 这是什么意思

时间:2013-05-08 15:39:31

标签: python python-3.x

我有这个功能,但我不熟悉错误或如何纠正错误。

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

2 个答案:

答案 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中是其内存地址;这主要用于区分一个实例与其他实例。你会看到很多,所以要习惯它。