零基础学习python——列表推导式

当我们使用python进行数据分析时,会使用for或while循环,但是许多花费大量的时间来进行构建多行代码,在python金融数据量化中,Abramn更建议搭建使用列表推导式来完成。

列表推导式

date_array=('20180118','20180119','20180120','20180121','20180122')#运用元组来封装交易日期
price_array=('30.14','29.28','26.36','32.56','32.56','32.82')#运用元组来封装收盘价格
sock_tuple_list=[(date,price) for date,price in zip(date_array,price_array) ]
print(sock_tuple_list)

输出结果:
[('20180118', '30.14'), ('20180119', '29.28'), ('20180120', '26.36'), ('20180121', '32.56'), ('20180122', '32.56')]

这里特别要注明,大家可能对zip用法不太了解,我在这里做一个补充。zip的效果是同时迭代多个序列,每次分别从一个序列中取得一个元素,当期中某个序列元素取完时,则宣告迭代结束。

date_array=('20180118','20180119','20180120','20180121','20180122')
price_array=('30.14','29.28','26.36','32.56','32.56','32.82')
sock_tuple_list=[(date,price) for date,price in zip(date_array,price_array) ]
print('20180119价格:{}'.format(sock_tuple_list[1][1]))#可以运用format函数进行字符串格式化
print(sock_tuple_list)

输出结果:
20178119价格:29.28
[('20180118', '30.14'), ('20180119', '29.28'), ('20180120', '26.36'), ('20180121', '32.56'), ('20180122', '32.56')]

仔细分析上面两段代码,对列表推导式略懂的小伙伴会思考当我们使用zip时候怎么能确保交易日期和收盘价格一一对应,当交易日期和收盘价格打乱时候岂不是无法精确.
通过tuple访问使用索引,欠缺灵活性,所以为了解决这个问题,特地引进可命名元组。

可命名元组:nametuple

from collections import nametuple
date_array=('20180118','20180119','20180120','20180121','20180122')
price_array=('30.14','29.28','26.36','32.56','32.56','32.82')
stock_nametuple=nametuple("stock",("stock","price"))
sock_nametuple_list=[sock_nametuple(date,price) for date,price in zip(date_array,price_array) ]
#nametuple访问使用price
print('20180119价格:{}'.format(sock_nametuple_list[1].price)
输出结果:
20180119价格:29.28
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值