python-Lambda替换
我还可以使用什么方法来代替“lambda”python-Lambda替换,python,lambda,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
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
第一次出现的
lambda
可以替换为:
第二种情况类似:
return sum(x.donation for x in self.bookings.values())
第三:
'\n'.join('{0} {1}'.format(x.runner_id, x.club_id) for x in self.bookings.values())
由于sum
和string.join
可以处理生成器,因此可以直接使用生成器表达式作为这些函数的参数。使用生成器:
return sum(x.fee for x in self.bookings.values())
一般来说,生成器和理解功能可以提高可读性,特别是当您必须使用
lambda
使map
或filter
工作时。此外,map
和lambda
在性能方面不能很好地配合()。@polku-Thx引起注意!更新了我的答案。
return sum(x.fee for x in self.bookings.values())