|
|
51CTO旗下网站
|
|
移动端

2.2.2 lambda函数

《量化交易之路:用Python做股票量化分析》第2章量化语言——Python,第2部分(第2~6章)主要讲解了量化交易需要的基础知识及相关工具,如Python语言、NumPy、pandas、数据可视化及量化数学等知识,适合完全没有任何编程经验的读者从头开始阅读。本节为大家介绍lambda函数。

作者:阿布来源:机械工业出版社|2017-10-19 16:06

2.2.2  lambda函数

针对前面find_second_max()这种简单函数,使用lambda匿名函数直接定义更加简洁。匿名函数轻量级地完成了函数的任务,特别是针对reduce()和map()等高阶函数,使用lambda函数是更好的选择。Java 8也支持lambda这种写法。

  1. find_second_max_lambda = lambda dict_array: \  
  2. sorted(zip(dict_array.values(), dict_array.keys()))[-2]  
  3.  
  4. find_second_max_lambda(stock_dict) 

输出如下:

  1. ('32.56', '20170121') 

以上代码把一个lambda函数赋给了一个变量,可以这样操作的原因是Python里一切皆为对象,所以函数也是一个对象。这个特点可以帮助开发者完成其他语言中一些很复杂的操作。

备注:lambda的写法需要一段时间来适应,没适应前全部使用def也可以。

Python中的函数可以返回多个返回值,但实际上仍然是一个返回值,只不过返回值通过打包为tuple队列,实现多个返回值,与在Java中使用Pair返回多个返回值类似。

以下find_max_and_min()函数返回收盘价格的最高价格和最低价格两个返回值。

  1. def find_max_and_min(dict_array):  
  2.     # 对传入的dict sorted排序  
  3.     stock_prices_sorted = sorted(  
  4.         zip(dict_array.values(), dict_array.keys()))  
  5.     return stock_prices_sorted[0], stock_prices_sorted[-1]  
  6.  
  7. find_max_and_min(stock_dict) 

输出如下:

  1. (('26.36','20170120'),('32.82','20170122'), 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Cisco网络技术教程(第2版)

本书作为思科认证体系中的入门级教材,主要讲述了网络的基本知识和思科设备的基本命令,以及路由、交换等深层次网络知识的入门知识,其体系...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊