Как убрать цикл в python?

Добрый день!
У меня ненормальный вопрос, а может и нормальный.

Есть код
def get_fields(self):
        return ['a', 'b', 'c']
def export_resource(self, obj):
        return [self.export_field(field, obj) for field in self.get_fields()]


Вызывается эта export_resource тоже в цикле, меняется только obj.
Вопрос – можно ли как-то упразднить этот цикл? То есть чтобы вызывалось
def export_resource(self, obj):
        return [self.export_field('a', obj), self.export_field('b', obj), self.export_field('c', obj)]

Если нет вариантов как-то развернуть – каким самым быстрым вариантом это можно заменить?
  • Вопрос задан
  • 2820 просмотров
Пригласить эксперта
Ответы на вопрос 3
imap, izip?
Ответ написан
Комментировать
yttrium
@yttrium
зачем портить совершенный код?
Ответ написан
Комментировать
А попробуйте вот так, в предположении, что второй аргумент функции export_field называется obj:

import functools

def export_resource(self, obj):
    return map(
        functools.partial(self.export_field, obj=obj),
        self.get_fields()
    )


Тут спрашивают, зачем. А затем! Потому что красиво. Мне нравится такая функциональщина :) На Скале оно бы ещё красивее выглядело.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы