2017-10-11 69 views
0

我有这样一段代码:蟒:“地图”对象未标化的

def substract_mean(self, group_point): 
    for i, a in enumerate(group_point): 
     group_point[i] = group_point[i] - self.mean_global[i] 
    return group_point 

我接收到以下错误消息:

group_point[i] = group_point[i] - self.mean_global[i]

TypeError: 'map' object is not subscriptable

+1

** ** 1你的问题的标题不符合您所显示的代码。 ** 2 **我怀疑你试图在Python 3解释器上运行旧的Python 2代码。 –

+0

嗨,欢迎来到SO!请你可以修改你的代码的格式,以便我们看到你如何缩进你的代码。正如你可能已经发现的那样,对于解释者和我们来说,正确的缩进是绝对必要的,以便理解你正在尝试做什么。 –

+0

如果您的group_point变量可以成功枚举,则问题可能是self.mean_global。请将'print(type(self.mean_global))'放在代码中而不是for循环中并发布结果 –

回答

0
def square(n): 
    return n*n 


class MeanClass: 
    mean_global = [10, 20, 30, 40] 

    def substract_mean(self, group_point): 
     for i, a in enumerate(group_point): 
      group_point[i] = group_point[i] - self.mean_global[i] 
     return group_point 


c = MeanClass() 
l = [1,2,3,4] 
m = map(square,l) 
print('works on a list object', c.substract_mean(l)) 
print('works on map object converted to a list',c.substract_mean(list(m))) 
print('fails on a map object',c.substract_mean(m))