代码之家  ›  专栏  ›  技术社区  ›  Matt

在类中使用map()函数

  •  1
  • Matt  · 技术社区  · 6 年前

    我一直在尝试 map() 函数在一个类中工作,但遇到了问题,因为我不确定是否应该将自己传递给它。如果是的话,我不确定怎么做 self 和我的其他iTerables一起。这是迄今为止我的代码:

    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 回复  |  直到 6 年前
        1
  •  3
  •   Silvio Mayolo    6 年前

    map 不会改变它的论点。它返回一个新的iterable。

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

    test.fxn 是两个参数的函数: self num . self.fxn 是一个 界限法 一个论点: 号码 . 因为你只是反复地把它应用在 自己 ,您可以绑定它并保存额外的参数。

    self.nums = list(map(self.fxn, self.nums))
    
        2
  •  1
  •   U13-Forward    6 年前

    你可以改变 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) 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()
    

    输出:

    [1, 256, 16777216]