当前位置: 首页 > 后端技术 > Python

Python代码阅读(上):列表映射后的平均值

时间:2023-03-25 22:22:14 Python

本文阅读的代码实现了对列表进行映射,并计算映射后的平均值。本文阅读的代码片段来自30-seconds-of-python。average_bydefaverage_by(lst,fn=lambdax:x):returnsum(map(fn,lst),0.0)/len(lst)#EXAMPLASaverage_by([{'n':4},{'n':2},{'n':8},{'n':6}],lambdax:x['n'])#5.0该函数用于求列表中的平均值。这段代码主要用到了lambda表达式和map函数。这个函数的主要逻辑是用lambda表达式和map函数提取一个由待计算值组成的迭代器,然后用sum函数计算list的和,再除以长度的名单。lambda表达式lambda参数形式的表达式:表达式可以创建匿名函数。在这段代码中,lambda表达式出现在函数average_by的参数定义中,作为参数传递给fn。所以在average_by函数体中fn充当参数中刚刚定义的函数。函数average_by默认参数中的lambda表达式是一个直接返回入参的函数。在示例中,传递给average_by的匿名函数返回字典中键值n项的值。map函数map函数是Python中内置的高阶函数。这个功能很有意思。它的参数是一个函数和一个可迭代对象。它返回一个迭代器,该迭代器将参数中的函数应用于参数中的可迭代对象。在30-seconds-of-python中也有一些类似的代码片段用于其他类似的功能。了解了average_by函数之后,这些就很好理解了。max_bydefmax_by(lst,fn):returnmax(map(fn,lst))#示例max_by([{'n':4},{'n':2},{'n':8},{'n':6}],lambdav:v['n'])#8min_bydefmin_by(lst,fn):returnmin(map(fn,lst))#EXAMPLESmin_by([{'n':4},{'n':2},{'n':8},{'n':6}],lambdav:v['n'])#2sum_bydefsum_by(lst,fn):returnsum(map(fn,lst))#EXAMPLESsum_by([{'n':4},{'n':2},{'n':8},{'n':6}],lambdav:v['n'])#20