2017-10-11 21 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))