python - python中的映射方法

标签 python list functional-programming

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']

我无法理解 map 函数在幕后是如何工作的,为什么它返回一个包含所有 None 的列表,但是当我检查 f.goodFood 时那里添加了元素?

最佳答案

map 在可迭代对象上应用一个函数并返回一个新列表,其中该函数已应用于每个项目。

在您的例子中,它显示 None 因为 f.addGoodFood 函数不返回任何内容。

为了测试目的,将 addGoodFood 更改为:

def addGoodFood(self, food):
    self.goodFood.append(food)
    return "test"

并查看:

>>> map(f.addGoodFood, ['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise'])
['test', 'test', 'test', 'test', 'test']

关于python - python中的映射方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388187/

相关文章:

Python - 将列表元素与 'neighbour' 元素进行比较

Python Spyder 停止响应

python - 在数字字符串中添加逗号

python - 如何返回另一个列表中 3 个最低值的列表

java - 修改数组列表中元素的方法?

python - 如何从大量数字中快速生成所有对的列表?

c++ - 如何在 C++ 中使用不同的参数多次调用一个函数

python - lambda self : do 是什么意思

javascript - JavaScript 中 "Abstract"函数的最佳实践?

python - (Python) 在线程中关闭 pygame.display