在类中使用map()函数

时间:2018-07-25 02:51:50

标签: python class

我一直试图让map()函数在类中工作,但是遇到了麻烦,因为我不确定是否应该将self传递给它。如果是这样,我不确定如何将self放入列表以与其他可迭代对象一起使用。到目前为止,这是我的代码:

from itertools import repeat

class test:
    def __init__(self):
        self.nums = [1, 4, 8]
        self.empty_list = []
        map(self.fxn, repeat(self, len(self.nums)), self.nums)
        print(self.empty_list)

    def fxn(self, num):
        self.empty_list.append(num ** num)

instance = test()

即使试图追加到空列表之后,列表似乎仍然是空白的,在该示例中我在做什么错了?

2 个答案:

答案 0 :(得分:3)

map不会改变其参数。它返回一个新的可迭代对象。

self.nums = list(map(...))

test.fxn是两个参数的函数:selfnumself.fxn是一个带有num参数的绑定方法。由于您只是在self上重复应用它,因此可以绑定它并为自己节省额外的参数。

self.nums = list(map(self.fxn, self.nums))

答案 1 :(得分:1)

您可以将map(self.fxn, repeat(self, len(self.nums)), self.nums)更改为self.empty_list=list(map(self.fxn,self.nums)),相当于self.empty_list=list(map(lambda x: self.fxn(x),self.nums))self.empty_list=[self.fxn(i) for i in self.nums],并记住将fxn()self.empty_list.append(num ** num)更改为{{ 1}}(并且由于它是return num ** num-list(map(...))的列表),因此请尝试以下操作:

list

输出:

class test:
    def __init__(self):
        self.nums = [1, 4, 8]
        self.empty_list=list(map(self.fxn,self.nums))
        print(self.empty_list)

    def fxn(self, num):
        return num ** num

instance = test()