学过计算机编程的人都知道,计算机无论多么牛叉,其实都是在“天下武功,唯快不破”的基础上成立的。计算机可以处理文本,剪辑视频,修复音频,美化照片,显示网页,科学计算,这一切的一切都是建立数据的基础之上,每种编程语言的本质,就是通过编程,撰写计算机的命令集合,充分利用计算机可以不休息、速度快的特征让计算机帮着处理数据,提高处理的效率。无论哪一种编程语言,都需要预制一些数据类型,并且这些类型能够覆盖人类描述信息的需要。C语言中对数值的处理花的信息很多,符合类型的结构体、联合体和枚举类型,后来都被指针取代了,说C语言简单的,主要是入门比较简单,关键字少,但是C语言的主要难点在指针。C++在C的基础上扩展了面向对象,增加了很多普通用户难以理解和应用的语法,还好有Java语言将C++大大简化了一番,Java的流行应该说C++的功劳绝对不少了。现在主流的是python,由于在机器学习和AI中Python可以大显身手,所以Python很火。Python把主要的问题给隐藏了不少,但是python的缺点是无法区分真正的水平吧。哈哈。
Python中的数据类型,就是语言规定了一些数据的规范和能够接受的操作方法。数值型(标量),能够参与算术运算的整型、浮点型、复数型、布尔型和空值;复合类型,列表、元组、字典、集合;字符串;文件对象;自定义类型等。
一、数值型:
1、整型:
1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 2 [GCC 9.2.0] on linux 3 Type "help", "copyright", "credits" or "license()" for more information. 4 >>> x = 5 + 2 - 3 * 4 5 >>> x 6 -5 7 >>> 5 / 2 8 2.5 9 >>> 5 // 2 10 2 11 >>> 5 % 2 12 1 13 >>> 5 * 2 14 10 15 >>> 5 ** 2 16 25 17 >>>
说明:第4行中包含了将+ - ×,运算规则和数学中的运算规则完全一样
第5-6行,查看结果和显示结果
第7-8行,作除法运算显示结果,python3中新增的规则
第9-10行,作地板除运算显示结果
第11-12行,作取余运算显示结果
第13-14行,作乘法运算显示结果
第15-16行,作幂运算显示结果
其他的数据类型浮点型和复数型都是一样的可以运算
布尔型作算术运算时,只能有Ture=1和False=0两种值
1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 2 [GCC 9.2.0] on linux 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> x = 5.1 + 2.8 - 3.2 * 4.3 5 >>> x 6 -5.86 7 >>> 5.1 / 2.5 8 2.04 9 >>> 5.1 // 2.5 10 2.0 11 >>> 5.1 % 2.5 12 0.09999999999999964 13 >>> 5.1 * 2.5 14 12.75 15 >>> 5.1 ** 2.5 16 58.73885009088958
本来以为11行会出错,居然没有,还出了结果,但是感觉不对阿
1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 2 [GCC 9.2.0] on linux 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> (3 + 2j) * (2 + 3j) 5 13j 6 >>> (3 + 2j) ** (2 + 3j) 7 (0.6817665190890336-2.1207457766159625j) 8 >>> x = (3 + 2j) * (2 + 3j) 9 >>> x.real 10 0.0 11 >>> x.imag 12 13.0 13 >>> round(3.4) 14 3 15 >>> round(3.5) 16 4 17 >>> import math 18 >>> math.ceil(3.49) 19 4 20 >>> math.f 21 math.fabs( math.floor( math.frexp( 22 math.factorial( math.fmod( math.fsum( 23 >>> math.floor(3.99) 24 3 25 >>> y=False 26 >>> x 27 13j 28 >>> y 29 False 30 >>> not y 31 True 32 >>> y 33 False 34 >>> y = True * 2 35 >>> y 36 2
代码说明:
第4-5行,复数乘法显示结果
第6-7行,复数乘方显示结果
第8行,将复数运算结果放到一个变量中
第9-10行,获取复数变量的实部
第11-12行,获取复数变量的虚部
第13-14行,调用内部函数获取浮点的近似值,四舍五入方式
第15-16行,调用内部函数获取浮点的近似值,四舍五入方式
第17行,导入数学库
第18-19行,应用数学库中函数获取浮点数的最大整数
第20-24行,输入部分内容按下table键之后的自动补全后的内容,最终选择需要的函数,并显示结果
第25,29行,定义bool变量,并显示结果
第26-27行,显示x的结果,及结果显示
第30-31行,bool变量运算及结果显示
第32-33行,bool变量本身没有变化
第34-36行,bool变量算术运算时,只能是1或0中的一个值
二、列表:
1、列表是数据的集合,并且数据可以不是同一种类型;
2、列表中的数据可以通过索引访问,可以从头开始,也可以从尾开始
3、通过切片获取新的列表
4、列表有自己的内置函数和运算符
5、列表的数据可以被修改,可以用list元组将转换成列表
1 Python 3.8.0 (default, Oct 23 2019, 18:51:26) 2 [GCC 9.2.0] on linux 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> x = ["first", '2th', 3, 4.999, True] 5 >>> x[0] 6 'first' 7 >>> x[-1] 8 True 9 >>> x[2] 10 3 11 >>> x[-3] 12 3 13 >>> x 14 ['first', '2th', 3, 4.999, True] 15 >>> x[-1:] 16 [True] 17 >>> x[-5:] 18 ['first', '2th', 3, 4.999, True] 19 >>> x[:-1] 20 ['first', '2th', 3, 4.999] 21 >>> x[::2] 22 ['first', 3, True]
代码说明:
第4行:定义列表x,每个元素类型都不相同
第13行:列出列表的所有元素
第5-6行:通过索引访问列表元素,索引正向从0开始,到长度-1结束
第7-8行:通过索引访问列表元素,索引反向从-1开始,到-长度结束
第9-13行:用两种方式访问列表的同一个元素
第15-16行:对列表切片,从-1到结束
第17-18行:对列表切片,从-5到结束
第19-20行:对列表切片,从开始到-1,但是不包含-1所在的元素
第21-22行:对列表切片,从开始到结束,但是增幅以2为增加单位
也可以调用列表的函数:其他内部函数可以通过命令help(list)查看python帮助文件:
Python 3.8.0 (default, Oct 23 2019, 18:51:26) [GCC 9.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> x=["first", '2th', 3, 4.999, True] >>> x ['first', '2th', 3, 4.999, True] >>> x.reverse() >>> x [True, 4.999, 3, '2th', 'first'] >>> x [True, 4.999, 3, '2th', 'first'] >>> x.reverse() >>> x ['first', '2th', 3, 4.999, True] >>> len(x) 5
三、元组help(tuple)查看帮助:
1、元组是数据的集合,并且数据可以不是同一种类型;
2、元组中的数据可以通过索引访问,可以从头开始,也可以从尾开始
3、通过切片获取新的元组
4、元组有自己的内置函数和运算符,元组用()包围即可
5、元组的数据不可以被修改,但是可以被删除,元组自己的方法只有count和index,可以用tuple将列表转换成元组,其余和列表一样
四、字典:
1、和列表差不多,但是存储的数据主要是键值对,键要求是不能修改的唯一值,值可以是任意类型
2、也有自己的方法可以用help(dict)查看帮助
1 >>> help(dict) 2 3 >>> x={1:"one", 2:"two", 3:"three"} 4 >>> x 5 {1: 'one', 2: 'two', 3: 'three'} 6 >>> x[4]="four" 7 >>> x 8 {1: 'one', 2: 'two', 3: 'three', 4: 'four'} 9 >>> x[1] 10 'one' 11 >>> x[2] 12 'two' 13 >>> x[3] 14 'three' 15 >>> x.get(1, "not avilable") 16 'one' 17 >>> x.get(5, "not avilable") 18 'not avilable'
代码很简单,不说明了。
五、集合:
有对象组成的无序集,只关心对象的存在性和唯一性到可以考虑使用集合类型,像是没有键的字典一样。
1 >>> y=set([1, 2, 3, 4, 5, 5, 3, 2]) 2 >>> y 3 {1, 2, 3, 4, 5} 4 >>> 1 in y 5 True 6 >>> 8 in y 7 False 8 >>> z = ([1, 2, 3, 4], [5, 5, 3, 2], "sample", 'hello') 9 >>> z 10 ([1, 2, 3, 4], [5, 5, 3, 2], 'sample', 'hello') 11 >>> 3 in z 12 False 13 >>> sample in z 14 Traceback (most recent call last): 15 File "<stdin>", line 1, in <module> 16 NameError: name 'sample' is not defined 17 >>> 'sample' in z 18 True
六、字符串(help(strq):
1、字符串是表示字符信息的重要工具,是不可修改的数据类型
2、字符串可以被’‘ “” ‘’‘ ’‘’包围
3、字符串可以包含制表符和换行符号。
4、字符串也有操作符(in、+、*)
5、字符串也有内置函数(len、max、和min)
6、字符串也可以索引和切片
7、字符串类型本身有很多处理字符串的方法,在re模块中也有字符串的处理函数,若想查看re的帮助,需要先import re,再help()命令即可
七、文件对象:
python通过文件对象访问文件,完成文件的读取或写入。
文件的写入:
1 >>> f=open("newfile", "w") 2 >>> f.write("First line with necessary newline character ") 3 44 4 >>> f.write("Second line with sample newline character! ") 5 43 6 >>> f.close()
文件的读取:
1 >>> g = open("newfile", "r") 2 >>> line1=g.read 3 g.read( g.readable( g.readline( g.readlines( 4 >>> line1=g.readline() 5 >>> line2=g.readline() 6 >>> print(line1, line2) 7 First line with necessary newline character 8 Second line with sample newline character!
无论如何,一定要把文件对象关闭。