Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-Lambda替换_Python_Lambda - Fatal编程技术网

python-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

我还可以使用什么方法来代替“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

第一次出现的
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())