python - Lambda替换

ben*_*hod 2 python lambda

我可以用什么其他方法代替'lambda'

def calculate_fees(self):
    return sum(map(lambda x: x.fee, self.bookings.values()))

def calculate_donations(self):
    return sum(map(lambda x: x.donation, self.bookings.values()))

def __str__(self):
    output = 'Event: {0} {1} {2}\n'.format(self.event_id, self.event_date, self.venue) + \
             'Miles: {0}\n'.format(self.miles) + \
             'Max Places: {0}\n'.format(self.max_places) + \
             'Basic Fee: £{0}'.format(self.basic_fee)

    if self.bookings:
        output += '\nRunners:\n' + \
                  '\n'.join(map(lambda x: '{0} {1}'.format(x.runner_id, x.club_id), self.bookings.values()))
    return output
Run Code Online (Sandbox Code Playgroud)

小智 6

第一次出现lambda可以用发电机代替:

return sum(x.fee for x in self.bookings.values())
Run Code Online (Sandbox Code Playgroud)

类似于第二个:

return sum(x.donation for x in self.bookings.values())
Run Code Online (Sandbox Code Playgroud)

第三:

'\n'.join('{0} {1}'.format(x.runner_id, x.club_id) for x in self.bookings.values())
Run Code Online (Sandbox Code Playgroud)

既然sum并且string.join可以处理生成器,您可以直接使用生成器表达式作为这些函数的参数.