Python期货量化交易实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-03 09:11:10

点击下载

作者:酆士昌 刘承彦

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python期货量化交易实战

Python期货量化交易实战试读:

版权信息

书名:Python期货量化交易实战

ISBN:978-7-115-52696-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。版     权

著    酆士昌 刘承彦

改  编 席松鹤

审  校 王海平

责任编辑 胡俊英

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315版权声明

原著书名《Python:期货演算法交易事务121个关键技巧详解》

本书中文繁体版本版权由台湾博硕文化股份有限公司(DrMaster Press Co., Ltd)获作者酆士昌、刘承彦授权独家出版发行,中文简体版本版权由博硕文化股份有限公司(DrMaster Press Co., Ltd)获作者同意授权人民邮电出版社有限公司独家出版发行。内容提要

如今,要想在企业和投资金融领域保持竞争力,只是精通电子表格和计算器已经远远不够,传统工具和数据集已经无法满足我们的需要。本书将用Python编程来解决期货量化交易的问题,并通过110多个技巧介绍实际的解决方案。

本书基于台湾期货交易所的案例进行讲解,从数据分析的角度切入,以技巧的形式深入数据背后,让读者从基本的期货交易规则开始,了解相关的技术指标,并能够熟练使用Python编程走上量化交易之路。

本书既适合期货领域的从业人员学习,也适合想进入金融领域的程序员参考。序言1

Python是一种面向对象的解释型语言,具备优异的运算能力与执行性能,以及多样的扩展类库,是编写量化交易程序常用的语言之一。由于操作简单、易于上手,Python已成为程序交易切入的方便工具。

量化交易将主观交易的想法具体量化,也就是写成明确的规则,并转为程序语言。一般交易者往往无法明确地提供量化的规则,而程序员对于金融交易普遍陌生,无法深入交易的业务领域。再者,多数交易者使用看盘软件,采用规范的图表与统计后的数据,对交易所原始的报价往往不知该如何处理。因此,量化交易是结合金融交易、程序设计与数据分析三大领域的新兴产业,进入的门槛较高。

鉴于此,我们从数据分析的角度切入,以一个个的示例让读者了解概念,并帮助他们照着案例实操,由最基本的期货交易规则开始,逐步切入程序设计来计算技术指标,进而进行历史回测,最后通过下单函数进行程序交易。本书旨在通过案例的逐步演练,降低学习的门槛,带领读者进入程序交易的殿堂。

本书使用Python作为程序开发的语言。书中的内容均可实操,并且搭配下单程序,可连接群益期货进行实盘交易。

最后,由于本人所知有限,虽求尽善尽美,但疏误之处在所难免,恳请读者不吝指正。酆士昌序言2

本书介绍由Python编写的程序化交易解决方案。程序化交易涉及多个领域的专业技能,单是财经或信息领域已很难熟悉,因此本书提供了一些交易的观念和方法,让读者可以迅速地切入程序化交易实操。

就解释型语言来说,Python拥有出色的运算效率,也有丰富的第三方类库,在许多应用领域都有出色的解决方案,是一款值得大家学习的程序设计语言。

就程序化交易来说,它的优势是能够克服人性的缺点。在交易中,人性的弱点是很难被忽略的,如贪婪、恐惧、陶醉等,这些都是阻碍稳定交易的因素。程序往往可以克服这些缺点,从中找出一套好的交易模型,并且将风险控制在可接受范围内,产生令人满意的交易。此外,程序化交易也能解决投资人花费大量时间追踪盘势的现状,以往每天需要花费数小时盯盘,现在只要确定程序正常运行,就可以稳定地进行交易。

最后,谢谢我的父母,他们总是给我鼓励;感谢各位朋友、亲戚的支持;感谢我的良师兼益友酆士昌,他伴随着我成长,甚至改变了我的人生道路。刘承彦资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。配套资源

本书提供配套资源,请在异步社区本书页面中点击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。关于异步社区和异步图书“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。异步社区微信服务号第1章 Python的基本语法

Python是一款非常流行的程序语言,广泛地应用于各个领域,并与其他语言、数据库或信息队列有良好的交互方式。Python本身是解释型的语言,运行效率非常高。用Python编写交易程序,必须先从基础的语法开始学习。

Python与一般编程语言不同的地方在于,一般编程语言通过括号来定义代码块,而Python是通过缩进来定义代码块。技巧1 【概念】Python的诞生与发展[1]

Python是一款解释型的开源编程语言,并且有完整的函数库。Python的应用领域相当广泛,一般常见的应用都可以用Python解决。基于上述原因,加上运行效率高等优势,Python成为广泛使用的程序语言。

Python的创始人Guido van Rossum一开始为了打发时间而开发了一款脚本语言,当时是以ABC语言为模板的,但ABC语言并不普及(因为它并非开源的程序语言)。为了避免发生类似的问题,Guido van Rossum开发了Python,并且将Python与其他语言(包括C语言)做了完美的结合。

直至今日,Guido van Rossum仍然决定着Python的整体发展。Python可以被简单地定义为脚本语言,就像shell脚本这种Linux平台下的解释型语言一样,但实际上Python已应用于许多大规模的软件开发中,例如Google的搜索引擎。

Python另一个强大的特点在于它的可扩展特性。Python并不是将所有功能都集中在标准库中,它还拥有相当丰富的工具、API以及第三方类库,也可以通过C语言来开发扩展模块。技巧2 【操作】安装Python的基本环境

本技巧将介绍如何在Windows操作系统上安装Python。本书以Python 3.7版本为例介绍其安装过程。

步骤01 在Python官方网站中的Windows下载专区,单击下载[2]“Latest Python 3 Release – Python3.7.3”,如图1-1所示。图1-1

步骤02 进入下载页面后,选择32位或64位的Python进行下载,如图1-2所示。图1-2

步骤03 当下载完成后,启动安装程序,选中“Install for all users”单选项,单击“Customize installation”按钮,如图1-3所示。图1-3

步骤04 设置路径为“C:\Python37”,并单击“Install”按钮,如图1-4所示。图1-4

步骤05 Python的安装进度界面如图1-5所示。图1-5

步骤06 安装完成后,单击“Close”按钮,如图1-6所示。图1-6

步骤07 安装完成后,在安装路径下会有Python启动程序,如图1-7所示。图1-7

步骤08 在“开始”菜单中,也有Python启动的快捷方式。选择“IDLE(Python 3.7 64-bit)”,如图1-8所示。图1-8

步骤09 打开IDLE(Python GUI)启动程序,如图1-9所示。图1-9

在Python GUI与Windows CMD中启动Python的差别在于,Python GUI提供的功能选项较多,因此若通过Python GUI开发,将有更多的选项可供使用。技巧3 【操作】Python语言的基本操作

Python在Windows中提供了Python.exe启动程序,用户可以直接通过该启动程序编写程序代码。下面介绍Python的基本操作。1.启动Python

启动Python有两种方式:双击Python启动程序图标,弹出Python的命令窗口;或者在Windows CMD中执行Python,直接进入Python的命令窗口。

通过双击Python启动程序(或Python GUI)图标,打开Python命令窗口,即可在命令窗口中使用Python,可参考技巧2的介绍。

接着,在Windows CMD中执行Python,进入Python的安装路径,执行过程如下:C:\Python37>pythonPython 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>>

每次启动Python都要切换目录相当麻烦,所以可以将Python的安装路径设置到默认的环境变量中,这样Python启动程序在任何路径下都可以直接被执行,设置环境变量的详细步骤可以参考技巧4。2.退出Python

退出Python的方式有两种:一种是通过Windows的组合键Ctrl+C直接退出,另外一种是通过exit函数来退出。下面分别介绍这两种方法。

在Python GUI中通过Windows组合键Ctrl+Z来关闭Python:>>>^ZC:\Python37>

在Python GUI或Python的命令窗口中通过exit()函数或quit()函数来关闭Python:>>> exit() C:\Python37>技巧4 【操作】执行Python语言的方式

Python属于解释型的程序设计语言,不需要编译,只需通过Python执行程序翻译给系统执行。执行Python有以下两种方式。● 直接通过Python命令窗口来编写程序代码。● 编写“.py”文档,然后执行Python指令来启用。

其中,第二种方式又分为两种用法。Python提供了Python、Pythonw两种执行文档,两者的差异在于:Python文档会显示当前程序所应该显示的结果;而Pythonw文档则不会显示出当前程序应该显示的结果,属于无声执行,适用于常驻程序。

这两种方式都通过Windows CMD来执行,但若每次执行都必须切换目录至安装路径则十分麻烦,因此本技巧先介绍设置环境变量的方法。● 通过set命令,可以暂时设置环境变量,关机后则会失效。● 手动进入系统设置环境变量,永久生效。

下面依次介绍两种设置环境变量的方法。1.通过set命令设置环境变量

首先,我们要了解设置的是PATH环境变量,可以通过Windows CMD直接设置。

设置方式是通过命令set来进行,每个路径用英文分号“;”区分,然后将Python安装路径加在最后面,命令如下:set PATH=%PATH%;"python 安装路径"

设置过程如下:C:\Python37>set PATH=%PATH%;"C:\Python37"

设置完成后,接着运行查询指令“set Path”,若设置成功,则安装路径会出现在整个环境变量的结尾,如下所示:C:\Python37>set PathPath=c:\Rtools\bin;c:\Rtools\mingw_32\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\R\R-3.4.1\bin;C:\Users\jack\AppData\Local\Microsoft\WindowsApps; C:\Python37; PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC2.手动设置环境变量,开机后自动生效

步骤01 找到“我的电脑”快捷方式,单击鼠标右键,接着单击“属性”命令,如图1-10所示。图1-10

步骤02 进入“属性”界面后,选择“高级系统设置”选项,如图1-11所示。图1-11

步骤03 进入“系统属性”界面后,打开“高级”选项卡,然后单击“环境变量”按钮,如图1-12所示。图1-12

步骤04 选择“系统变量”中的“Path”选项,单击“编辑”按钮,如图1-13所示。图1-13

步骤05 在“变量值”右侧框内的字符串末尾加一个英文的分号,再补充“C:\Python37”(见图1-14),并陆续单击“确定”按钮直至设置完成。图1-14说明 在本书中的操作说明中,如果出现的提示符号为“>”或“C:\Python37>”,就表示该程序须在命令提示符或PowerShell中执行“python程序.py”;如果出现的提示符号为“>>>”,就表示须在Python命令窗口或Python GUI下执行示例语法。技巧5 【操作】Python的基本运算与数学函数

基本运算包括四则运算和一些简单的数学函数,而常见的数学函数有绝对值、平方与开方、三角函数与指数、对数等。1.加减乘除——+、−、*、/

Python中提供的基本运算有加、减、乘、除,分别为“+”“−”“*”“/”。下面通过简单的操作来进行介绍。>>> 1 + 23>>> 7 - 43>>> 7 * 321>>> 21 / 37.0

变量间的运算方式类似,如下所示:>>> x=3>>> y=4>>> x+y7>>> x-y-12.整除——//

整除是Python中比较特别的运算,又称为地板(floor)除法。

下面通过简单的操作来进行介绍:>>> 3.0/21.5 >>> 3.0//2 1.0

整除会将计算出来的浮点型(float)结果的小数点后面的部分无条件舍去;若值为整型(int)结果,则无影响。

变量间的运算方式类似,如下所示:>>> x=14.0 >>> y=3 >>> x/y 4.666666666666667 >>> x//y 4.03.幂——**

Python提供了幂运算,例如x的y次幂可以用语法表示为x**y,示例如下:>>> 4**3 64

使用变量进行幂运算,示例如下:>>> x=3 >>> y=4 >>> x**y 814.取模——%

在Python中,可以进行取模运算,例如x除以y的余数的表达式为x%y,示例如下:>>> 300%10 0>>> 300%113>>> 12%10

使用变量进行取模运算,如下所示:>>> x=14>>> y=3>>> x%y25.生成随机数——random

Python提供了random模块,但该模块不在标准函数库中,所以必须在使用相关函数前导入random模块。

下面介绍random模块和几个常用函数的用法。

导入random模块,并随机生成0~99中的任意值:>>> import random>>> random.randint(0,99)95>>> random.randint(0,99)47

随机生成0~101中2的倍数:>>> random.randrange(0, 101, 2)28>>> random.randrange(0, 101, 2)78

随机生成0~101中3的倍数:>>> random.randrange(0, 101, 3)57>>> random.randrange(0, 101, 3)75

随机生成一个小于1并且大于0的值:>>> random.random()0.248636175217069276.转换数值类型——int、float

在Python中,可以通过函数强制转换数值类型,示例如下:>>> int(3.1) #小数位数转整数位会无条件舍去3>>> x=4.2 >>> int(x) 4>>> >>> float(3) 3.0 >>> float(3.7) #小数位数转整浮点位数会完整转出3.7

与C语言相比,Python不仅限于整数与浮点数之间的转换,也可以通过字符串转换为数值,示例如下:>>> x ="1.2" >>> float(x) 1.27.四舍五入函数——round

在Python中,可以通过该函数强制转换数值类型,示例如下:>>> round(4.5654455) #若没有填入位数参数,则初始值为05 >>> round(4.5654455,3) #输入位数参数3,则代表四舍五入至小数第3位4.565 >>> round(4.5654455,4) 4.5654

使用变量进行四舍五入,如下所示:>>> x=4/3 >>> round(x) 18.小于等于某数的最大整数——floor

在Python中,可以通过floor函数取得小于等于一个数的最大整数。由于floor函数在math模块中,因此必须先导入该模块才可以使用,示例如下:>>> import math>>> math.floor(4.56778)4>>> math.floor(4)4>>> math.floor(-3.44556)-4

使用变量进行操作,如下所示:>>> x=3.45>>> y=-4.56>>> math.floor(x)3>>> math.floor(y)-59.大于等于某数的最小整数——ceil

在Python中,可以通过ceil函数来取得大于等于某个数的最小整数。由于ceil函数在math模块中,因此必须先导入该模块才可以使用,示例如下:>>> import math>>> math.ceil(4)4>>> math.ceil(4.1)5>>> math.ceil(-3)-3>>> math.ceil(-3.3)-3

使用变量进行操作,如下所示:>>> x=3.45>>> y=-4.56>>> math.ceil(y)-4>>> math.ceil(x)410.开平方——sqrt

在Python中,可以通过sqrt函数来进行开平方运算。由于sqrt函数在math模块中,因此必须先导入该模块才可以使用,示例如下:>>> import math >>> math.sqrt(16) 4.0 >>> math.sqrt(81) 9.0

使用变量进行操作,如下所示:>>> x=100 >>> math.sqrt(x) 10.011.绝对值函数——abs

在Python中,可以通过abs函数来求绝对值,示例如下:>>> abs(100)100>>> abs(-100.0)100.0

使用变量进行操作,如下所示:>>> x=-1.354523>>> abs(x)1.35452312.指数函数——expx

在Python中,可以通过exp函数来求e。由于exp函数在math模块中,因此使用前必须先导入该模块,示例如下:>>> import math>>> math.exp(2)7.38905609893065>>> math.exp(10)22026.46579480671813.对数函数——log、log10

在Python中,可以通过log与log10函数来计算对数,其中log是以e为底的对数,log10是以10为底的对数。由于log函数在math模块中,因此必须先导入该模块才可以使用,示例如下:>>> import math>>> math.log(4)1.3862943611198906>>> math.log(6)1.79175946922805514.三角函数——sin、cos、tan

在Python中,也有三角函数。由于三角函数在math模块中,所以必须先导入该模块才可以使用,示例如下:>>> import math >>> math.sin(10) -0.5440211108893698 >>> math.cos(10) -0.8390715290764524 >>> math.tan(10) 0.648360827459086615.最大值——max

在Python中,可以通过max函数来求一组数中的最大值,示例如下:>>> max(-1,1,2,3,4,5,6) 6

使用变量进行操作,如下所示:>>> x=(1,2,3,4,5,6,7) >>> max(x) 716.最小值——min

在Python中,可以通过min函数来取得一组数中的最小值,示例如下:>>> min(-1,1,2,3,4,5,6) -1

使用变量进行操作,如下所示:>>> x=(1,2,3,4,5,6,7) >>> min(x) 1技巧6 【操作】基本变量的使用

本技巧将依次介绍与变量以及矩阵相关的操作。1.变量的声明——=

Python与大多数编程语言相同,可通过“=”进行变量声明,将等号右边的值赋给左边的变量,示例如下:>>> x1>>> x=(1,2,3) #将元组值赋给x变量>>> x(1, 2, 3)>>> x=[1,2,3] #将列表值赋给x变量>>> x[1, 2, 3]2.变量的删除——del

在Python中,需通过del命令将变量删除,示例如下:>>> x[1, 2, 3]>>> del x>>> x TracebacK(most recent call last): File "", line 1, in NameError: name 'x' is not defined3.运算赋值——+=、-=、=、/=、//=、*=、%=

Python继承了C语言的方式,也拥有运算赋值的功能,可以有效地减少程序代码的编写,示例如下:>>> x=1>>> x1>>> x+=1 #等同于x=x+1>>> x 2>>> x-=1 #等同于x=x-1>>> x 1>>> x*=3 #等同于x=x*3>>> x 3>>> x/=3 #等同于x=x/3>>> x 1.0

幂运算赋值示例如下:>>> x=3 >>> x**=3 #等同于x=x**3>>> x 27

整除运算赋值示例如下:>>> x 27 >>> x//=4 #等同于x=x//4>>> x 64.显示当前变量——dir、globals、locals

在Python中,dir显示变量,globals显示全局变量,locals显示局部变量,示例如下:>>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'random', 'x', 'y'] >>> globals() {'__builtins__': , 'random': , '__package__': None, 'x': 14, 'y': 3, '__name__': '__main__', '__doc__': None} >>> locals() {'__builtins__': , 'random': , '__package__': None, 'x': 14, 'y': 3, '__name__': '__main__', '__doc__': None} 5.查询变量的类型——type

在Python中,type函数能够显示出当前变量的类型。变量类型主要分为数字(number)、字符串(string)、列表(list)、元组(tuple)、字典(dictionary)5种。

其中,数字又分为4种。可使用type函数查看几种数据类型,示例如下:>>> x=1>>> type(x)>>> x=1.0>>> type(x)>>> x="123">>> type(x)>>> x=[1,2,3]>>> type(x)>>> x=(1,2,3)>>> type(x)>>> x={}>>> type(x)技巧7 【操作】元组、列表与字典的应用

在Python中,没有矩阵这种数据类型,但是有元组、列表与字典这3种类型。其中,元组与列表很相似,都是用来存储数据的序列,也都支持多维的序列(矩阵);唯一不同之处就是元组在定义完成后,是不允许更改其内部值的,而列表可以更改其内部值。字典在对象中加上了索引值。

下面通过一个示例来介绍元组与列表的差异。>>> x=[1,2,3]>>> x[2]=4 #列表对象可以被修改>>> x[1, 2, 4]>>> x=(1,2,3)>>> x[2]=4 #元组对象无法被修改TracebacK(most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment

下面分别介绍3种对象的应用。1.元组(tuple)

元组定义以后不得更改其内部元素。下面介绍元组的基本用法。(1)定义元组

元组是用小括号来定义对象的,示例如下:>>> x=(1,2,3,4,5,6) #定义一维的元组>>> x (1, 2, 3, 4, 5, 6) >>> x=((1,2),(3,4),(5,6)) #定义二维的元组>>> x ((1, 2), (3, 4), (5, 6))

也可以在一行中定义多个变量,示例如下:>>> x,y = (1,2,3),(3,4,5) >>> x (1, 2, 3) >>> y (3, 4, 5)(2)删除元组变量

通过del可以删除元组,示例如下:>>> x=((1,2),(3,4),(5,6)) >>> x ((1, 2), (3, 4), (5, 6)) >>> del x >>> x TracebacK(most recent call last): File "", line 1, in NameError: name 'x' is not defined(3)访问元组

在Python元组对象中,索引值都是从0开始的。访问元组的示例如下:>>> x=((1,2),(3,4),(5,6))>>> x((1, 2), (3, 4), (5, 6))>>> x[0] (1, 2)>>> x[0][0] 1(4)元组计算

元组计算是指将元组进行组合或复制。若要进行数值计算,则需取出元组内的值再进行计算,示例如下:>>> x=(1,2,3)>>> y=(7,8,9)>>> x+y #两个元组组合(1, 2, 3, 7, 8, 9)>>> x*3 #元组倍数复制(1, 2, 3, 1, 2, 3, 1, 2, 3)(5)在函数中的应用

元组也可以用于max、min函数中,示例如下:>>> x(1, 2, 3)>>>>>> max(x)3>>> min(x)1(6)在判断中的应用

Python提供了in指令,用来判断该元素是否在tuple中,示例如下:>>> x (1, 2, 3) >>> 3 in x True >>> 4 in x False(7)在循环中的应用

Python的元组对象可以直接用来进行循环计算。用户可以利用这个特性来编写程序代码,示例如下:>>> x (1, 2, 3) >>> for i in x: ... print (i) ... 1232.列表(list)

列表是Python中定义列表的语法。与元组的不同在于,列表可以变更内部元素值。下面介绍list的基本用法。(1)定义列表

列表是用中括号来定义对象的,示例如下:>>> x=[1,2,3,4,5,6] >>> x [1, 2, 3, 4, 5, 6] >>> x=[[1,2],[4,5],[7,8]] >>> x [[1, 2], [4, 5], [7, 8]]

也可以在一行中定义多个列表变量,示例如下:>>> x,y=[1,2,3],[6,7,8] >>> x [1, 2, 3] >>> y [6, 7, 8](2)删除列表变量

通过del可以删除列表,示例如下:>>> x=[[1,2],[4,5],[7,8]]>>> x[[1, 2], [4, 5], [7, 8]]>>> del x>>> xTraceback(most recent call last): File "", line 1, in NameError: name 'x' is not defined(3)访问列表

在Python列表对象中,列表的索引是从0开始的。下面介绍如何访问列表,示例如下:>>> x[1, 2, 3]>>> x[0]1>>> x[:2][1, 2]>>> x=[[1,2],[4,5],[7,8]]>>> x[0][0]1>>> x[1][1]5(4)计算列表

这里所指的计算是将列表组合或复制。若要进行数值计算,则需先取出列表内的值再进行计算,操作如下:>>> x,y=[1,2,3],[6,7,8]>>> x+y[1, 2, 3, 6, 7, 8]>>> x*3[1, 2, 3, 1, 2, 3, 1, 2, 3](5)函数应用

由于可以更改列表的元素,因此可以使用相对较多的函数。

① append函数可以将参数添加到列表的尾部,示例如下:>>> x=[45,72,65,21,87] >>> x [45, 72, 65, 21, 87] >>> x.append(100) >>> x [45, 72, 65, 21, 87, 100]

② count函数可以计算该值在列表中的个数,示例如下:>>> x [45, 72, 65, 21, 87, 100] >>> x.count(5) 0>>> x.count(65) 1

③ extend函数可以将多个列表汇总起来,示例如下:>>> x [45, 72, 65, 21, 87, 100] >>> >>> x.extend([44,55]) >>> x [45, 72, 65, 21, 87, 100, 44, 55]

④ index函数可以获取特定元素在列表当中的位置,示例如下:>>> x [45, 72, 65, 21, 87, 100, 44, 55] >>> x.index(65) 2>>> x.index(100) 5

⑤ remove函数可以删除列表里面的特定元素,示例如下:>>> x [1, 2, 3, 4, 5] >>> x.remove(4) >>> x[1, 2, 3, 5]

⑥ reverse函数可以将整个列表的内容反转,示例如下:>>> x[1, 2, 3, 5]>>> x.reverse()>>> x[5, 3, 2, 1]

⑦ sort函数可以将整个列表按照从小到大的顺序排序,示例如下:>>> x[5, 3, 2, 1]>>> x.sort()>>> x[1, 2, 3, 5](6)在判断中的应用

Python提供了in指令,可以判断该元素是否在列表中,示例如下:>>> x=[1,2,3,4,5,6,7]>>> 5 in xTrue>>> 8 in xFalse(7)在循环中的应用

Python的列表对象可以直接用来进行循环计算。用户可以利用这个特性来编写程序代码,示例如下:>>> x=[1,2,3,4,5,6,7]>>> sum=0>>> for i in x:... sum+=i #缩进...>>> sum28(8)列表解析式

列表解析式能够通过简短的程序代码,将一个列表转换为另一个列表。简单来说,有点像在取该列表的子集合,但又不全然如此。在列表解析式中还可以进行栈位的判断、计算,实际上可以实现的功能相当多。

从操作上来说,就是通过循环来进行列表的判断和计算,但列表解析式不需要通过换行就可以实现循环。但就功能上来说,还是有某些限制,例如不能在列表解析式中进行嵌套循环。

列表解析式常用于读取文件、数据筛选等。示例如下:[3]>>> content = [ line for line in open('Futures_20170815_I020.csv')] #读取文件内容>>> content[1:10] ['8450010,8450009,TXFH7,128,10310,732,732,202,349\n', '8450011,8450010,TXFH7,128, 10309,4,736,206,350\n', '8450011,8450010,TXFH7,128,10309,1,737,207,351\n', '8450011,8450010,TXFH7,128,10310,1,738,208,352\n', '8450011,8450010,TXFH7,128, 10310,1,739,209,353\n', '8450011,8450010,TXFH7,128,10309,2,741,210,354\n', '8450011,8450011,TXFH7,128,10309,1,742,211,355\n', '8450013,8450011,TXFH7,128, 10310,1,743,212,356\n', '8450013,8450011,TXFH7,128,10310,1,744,213,357\n'] >>> I020 = [ line.strip('\n').split(",") for line in content][1:] >>> I020[1:10] [['8450011', '8450010', 'TXFH7', '128', '10309', '4', '736', '206', '350'], ['8450011', '8450010', 'TXFH7', '128', '10309', '1', '737', '207', '351'], ['8450011', '8450010', 'TXFH7', '128', '10310', '1', '738', '208', '352'], ['8450011', '8450010', 'TXFH7', '128', '10310', '1', '739', '209', '353'], ['8450011', '8450010', 'TXFH7', '128', '10309', '2', '741', '210', '354'], ['8450011', '8450011', 'TXFH7', '128', '10309', '1', '742', '211', '355'], ['8450013', '8450011', 'TXFH7', '128', '10310', '1', '743', '212', '356'], ['8450013', '8450011', 'TXFH7', '128', '10310', '1', '744', '213', '357'],['8450013', '8450012', 'TXFH7', '129', '10310', '2', '749', '214', '362']]3.字典(dictionary)

字典是带有索引的列表,在每个值之前都会加上索引,所以大多数操作都会通过索引来进行取值。(1)定义字典

字典用大括号来定义,示例如下:>>> x={'one':123,'two':345,'three':567} >>> x {'one': 123, 'two': 345, 'three': 567}(2)删除字典变量

用del可以删除字典,示例如下:>>> x{'one': 123, 'two': 345, 'three': 567}>>> del x>>> xTraceback(most recent call last): File "", line 1, in NameError: name 'x' is not defined(3)访问字典

基于字典的存储结构只能通过index访问,示例如下:>>> x={'one':123,'two':345,'three':567}>>> x{'one': 123, 'two': 345, 'three': 567}>>> x['one']123>>> x['three']567>>> x[0] Traceback(most recent call last): File "", line 1, in KeyError: 0(4)函数应用

① len函数可以查看字典对象的长度,示例如下:>>> x{'one': 123, 'two': 345, 'three': 567}>>> len(x)3

② copy函数可以复制相同的字典对象,示例如下:>>> x.copy(){ 'one': 123, 'two': 345, 'three': 567}

③ clear函数可以清除字典对象,示例如下:>>> x.clear()>>> x{}

④ items函数可以将字典转换成list对象,示例如下:>>> x.items() dict_items([('one', 123), ('two', 345), ('three', 567)])技巧8 【操作】使用Python的第三方库

许多模块并非是Python的基本模块,当程序开发者需要时,可以另外下载扩展应用的模块,如pymysql、pandas。本技巧将介绍如何安装并使用Python的第三方库。

导入模块需要通过import指令进行。下面以导入math模块为例进行说明,执行过程如下:>>> import math >>>

math是Python的基本模块,所以不用额外安装即可导入。

导入第三方库,如pymysql(Python连接MySQL的模块),在未安装的情况下会发生以下情况:>>> import pymysql Traceback(most recent call last): File "", line 1, in ImportError: No module named pymysql

这时需要先安装该模块。在安装模块前,必须先安装Python管理模块的程序“pip”,安装pip后才可以安装Python的模块,概念有点像Ubuntu的APT“Advanced Packaging Tool”,通过它来安装系统的模块。下面介绍如何安装pip。

如果是从官网上下载安装的Python,其中已经包含了pip,不需要另外安装,但要把“C:\Python37\Scripts”加进系统默认路径(环境变量)下,系统默认的设置可参考技巧4。

接着就可以执行pip命令了,要查看是否配置正确,可在CMD中执行pip命令,过程如下:>pipUsage: pip [options]Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. list List installed packages. show Show information about installed packages. checK Verify installed packages have compatible dependencies. search Search PyPI for packages. wheel Build wheels from your requirements. hash Compute hashes of package archives. completion A helper command used for command completion. help Show help for commands.

若出现命令的参数说明,则表示正确执行了该命令。

接着安装pymysql模块,通过系统管理员启动Windows CMD,执行以下命令:pip install pymysql

执行过程如下:

接着,进入Python命令窗口中,导入pymysql:>>> import pymysql>>>

若没有出现错误信息,则表示导入成功。技巧9 【操作】字符串处理的应用

本技巧介绍Python中常用的字符串处理函数。1.len——查询字符串长度

len函数可用于查询字符串长度,示例如下:>>> str="i am a cat" >>> len(str) 102.join——将元素通过特定符号组合

join函数用于将不同元素组合成一个大字符串,示例如下:>>> seq=" " #tab符号>>> cc=('1','2','3','4') >>> seq.join(cc) #Python中通过’\t’来展示tab'1\t2\t3\t4'3.strip——将特定字符从字符串首部、尾部删除

strip函数的示例如下:>>> str.strip() 'i am a cat' >>> str.strip("a") ' am a cat' >>> str.strip("at") ' am a c'4.lstrip——将特定字符从字符串首部删除

lstrip函数的示例如下:>>> str="i am a cat" >>> str.lstrip("a") ' am a cat' >>> str.lstrip("at") ' am a cat'5.rstrip——将特定字符从字符串尾部删除

rstrip函数的示例如下:>>> str="i am a cat">>> str.rstrip("a")'i am a cat'>>> str.rstrip("at")'i am a c'6.swapcase——转换英文字母大小写

swapcase函数的示例如下:>>> str="I am A cat">>> str.swapcase()'i AM a CAT’7.lower、upper——将英文字母转换成小写、大写

lower函数用于将英文字母转换成小写形式,upper函数用于将英文字母转换成大写形式,示例如下:>>> str="I am A cat">>> str.lower()'i am a cat'>>> str.upper()'I AM A CAT'8.max、min——查看字符串中的最大值、最小值

max函数用于查看字符串中的最大值,min函数用于查看字符串中的最小值,示例如下:>>> str="i am a cat">>> max(str)'c'>>> min(str)' '9.zfill——将字符串用0填满至特定宽度

用zfill函数补齐15个字符,示例如下:>>> str='TTT'>>> str.zfill(15)'000000000000TTT'10.replace——替换字符串中的特定字符

下面replace函数的示例是以空白替换H字符:>>> str='HUJRYEHDGSJKER' >>> str.replace('H'," ") ' UJRYE DGSJKER'11.split——将字符串按照特定符号进行分割

split函数的示例如下:>>> str='HUJRYEHDGSJKER' >>> str.split('J') ['HU', 'RYEHDGS', 'KER']12.splitlines——将字符串按照换行符进行分割

下面splitlines函数的示例是以逗号来进行分割:>>> >>> str="111\n333\n532\n7456\n234\n122" >>> str.splitlines() ['111', '333', '532', '7456', '234', '122']技巧10 【操作】时间函数应用

Python提供了time模块来解决时间处理的问题,本技巧将详细介绍time模块中的函数应用。

若读者要了解Python的时间格式,则可先参考技巧19,再回来了解时间函数的应用。下面介绍time模块中的函数应用。1.time.time——获取当前时间秒数

通过time.time函数可以获取当前的时间秒数(从1970/01/01 00:00开始计算,直至目前的总秒数),示例如下:>>> import time >>> time.time() 1505975715.899 >>> time.time() 1505975719.699

获取当前时间后,可以与其他时间进行比较,示例如下:>>> import time>>> start=time.time()>>> time.time() –start8.256999969482422

以上结果代表两次执行的时间差为8秒多。2.time.localtime——获取当前时间元组

localtime函数的示例如下:>>> import time>>> time.localtime()time.struct_time(tm_year=2017, tm_mon=9, tm_mday=21, tm_hour=14, tm_min=46, tm_sec=23, tm_wday=3, tm_yday=264, tm_isdst=0)>>> time.localtime()[1]9>>> time.localtime()[3]143.time.clock——获取当前时间秒数

clock函数的示例如下:>>> import time>>> time.clock()2896.8592524024843>>> time.clock()3035.4819124348934.time.ctime——将秒数转换成字符串

ctime函数可以用于获取当前时间,并且将秒数转换成字符串,示例如下:>>> import time>>> time.ctime()'Fri Sep 22 10:51:54 2017'>>> time0=time.time()>>> time.ctime(time0)'Thu Sep 21 14:54:38 2017'5.time.mktime——将时间元组转换成秒数

mktime函数可用于时间的格式转换,示例如下:>>> import time >>> t = (2017, 2, 17, 17, 3, 38, 1, 48, 0) >>> time.mktime(t) 1487322218.0

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载