再谈数据类型

  学过计算机编程的人都知道,计算机无论多么牛叉,其实都是在“天下武功,唯快不破”的基础上成立的。计算机可以处理文本,剪辑视频,修复音频,美化照片,显示网页,科学计算,这一切的一切都是建立数据的基础之上,每种编程语言的本质,就是通过编程,撰写计算机的命令集合,充分利用计算机可以不休息、速度快的特征让计算机帮着处理数据,提高处理的效率。无论哪一种编程语言,都需要预制一些数据类型,并且这些类型能够覆盖人类描述信息的需要。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!

  无论如何,一定要把文件对象关闭。

原文地址:https://www.cnblogs.com/guochaoxxl/p/11987179.html