Использование функции map () в классе

1

Я пытаюсь заставить функцию map() работать внутри класса, но у меня были проблемы, потому что я не уверен, должен ли я передавать себя в нее. Если это так, я не уверен, как сделать 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()

Даже после попытки добавления в пустой список список по-прежнему кажется пустым, что я делаю неправильно в этом примере?

Теги:
class

2 ответа

3
Лучший ответ

map не мутирует его аргумент. Он возвращает новый итеративный.

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

test.fxn является функцией двух аргументов: self и num. self.fxn - связанный метод одного аргумента: num. Поскольку вы просто многократно применяете его на self, вы можете связать его и сохранить дополнительный аргумент.

self.nums = list(map(self.fxn, self.nums))
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 я 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]
  • 0
    Пожалуйста, измените ваш ответ, чтобы добавить объяснение того, как работает ваш код и как он решает проблему ОП. Многие СО постеры являются новичками и не поймут код, который вы опубликовали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню