class FoodExpert:
def init(self):
self.goodFood = []
def addGoodFood(self, food):
self.goodFood.append(food)
def likes(self, x):
return x in self.goodFood
def prefers(self, x, y):
x_rating = self.goodFood.index(x)
y_rating = self.goodFood.index(y)
if x_rating > y_rating:
return y
else:
return x
聲明這個類之後,我寫了這個代碼:地圖方法
>>> f = FoodExpert()
>>> f.init()
>>> map(f.addGoodFood, ['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise'])
[None, None, None, None, None]
>>> f.goodFood
['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise']
我無法理解的地圖功能是如何工作的篷子後面,爲什麼它返回所有列表None
,但是當我檢查f.goodFood
時,元素已添加到那裏?
請注意,像這樣使用'map'是一個壞主意。使用'for'循環;它不會創建一個列表,並且它將在Python 3中工作,而不需要將它包裝在「list」調用中。 – user2357112
(你是否期待'map'調用返回'f.goodFood'?它不,它甚至不知道'f.goodFood'是相關的。) – user2357112
對於這個用法,你最好做' f.goodFood.extend([「垃圾郵件」,「雞蛋」等))' – Daenyth