引言
对于以前没有接触过任何编程语言的人来说,首先能明确编程的目的很重要,往往能明确一个目的,在日后的学习中遇到困难时心态就会轻松许多。当今计算机文化的多元化发展,涌现出了大数据、分布式计算、神经网络、机器学习等众多新概念,即便这样,任何意义上的编程的核心目的都脱离不了数据处理,这点始终贯穿了计算机的发展史。那么我们就从数据处理入手,来看看我们要怎么处理数据。
知识点预备
在开始学习前,需要了解的知识点包括:
了解计算机组成
知道虚拟机概念和各层的作用
数学知识点:二进制数
推荐参考资料:
说明
本文中不再讲解Python的安装和环境配置,如果需要了解,请自行百度。文中出现的案例,均使用Python自带的IDLE进行演示,代码前的“>>>”是IDLE中代码行首的标识符,在自己操作时不用输入。
数据类型
既然要进行数据处理,那么我们就先看看Python中所定义的数据类型,即我们所面对的是什么样的数据。我们从最简单几种的入手,看看你能否了解数据的概念。
数字
远了的不说,仅从中国的结绳记事说起,就可以见得数字出现于文字之前,起源更为久远。随着人类数学观的不断发展,数字的形态也不断演变,从计算机编程中出现的数字类型就可以窥斑知豹。Python中的数字类型不同于其他编程语言,这也是我最喜欢的地方,数字类型仅分为三类,即:整数(int)、浮点数(float)和复数(complex)。那么对于这三类数有不懂的同学,请自行百度补脑。Python中数字类型数据常用于赋值操作,当然后面会说到特殊的布尔型数值,同时也可用于判断和状态输出等。
整数(整型)
输入的每个整数代表即其自身,例如:
>>> x = 1
>>> y = 3
# 那么直接输入整数时,输出即整数自身,但不具有任何意义
>>> 3
3
知识点:除了我们通常直接输入整数赋值外,也可以使用Python的内建函数int()进行整数处理。关于int()详细的使用方法,可以点击链接参考。
浮点数(浮点型)
同整数一样,浮点数在我们的日常学习中不可或缺,例如:
>>> x = 3.1415926
>>> x
3.1415926
>>> 3.1415926
3.1415926
知识点1:除了我们通常直接输入浮点数赋值外,也可以使用Python的内建函数float()进行处理。关于float()详细的使用方法,可以点击链接参考。
知识点2:在我们的日常数字处理中,难免会遇到取整问题,在Python中的取整有两种方法,但得出的结果不尽相同。这两种可采用int()和round()进行取证操作,详细内容可点击链接进行参考。
复数
复数分为虚部和实部,每个部分中均采用浮点型数值,赋值方法如下:
>>> x = 3 + 4j
>>> x
(3+4j)
知识点1:除了我们通常直接输入复数赋值外,也可以使用Python的内建函数complex()进行处理。关于complex()详细的使用方法,可以点击链接参考。
知识点2:复数实部和虚部数值的获取可以采用z.real和z.imag进行操作,如下:
>>> x = 3 + 4j
>>> x.real
3.0
>>> x.imag
4.0
那么以上三种就是我们Python学习中会遇到的大多数的数字类型,整个数理运算都离不开这三种,我们会在后续的内容中详细讲解数字运算和它们的方法。
说明
本文中所出现的数值一般采用十进制,除此之外还有二进制、八进制和十六进制等,想要详细了解请参考进制。
文本
文本类型在Python中全称是文本序列类型,那么它又分文机器偏向和人类偏向,各自代表的意思是机器易读和人类易读。人类易读即我们现在打开电脑后屏幕上所有你能看得懂语义的文本内容,像本文中的文字,又或者你日常办公软件中处理的文字,这些都属于文本类型数据。那么机器易读就显而易见是计算机能看得懂语义的文字了,也就是计算机可以直接进行处理的文字,那么如果你了解了我文章开始提供的两篇参考资料,在这里就可以容易明白了。
文本在Python中通常体现为字符串,即string,内建类型为str。说到字符串,我们可以举一个常见的例子:
Hello world!
那么懂英文的人应该都知道它的意思,那么这句话就是一个字符串,在Python字符串的体现形式是一句话或一个字加双引号(””)或单引号(”),即:
>>> "Hello world!"
'Hello world!'
>>> 'Hello world!'
'Hello world!'
# 两种输出结果一致
# 同样可以进行赋值操作
>>> x = 'Hello world!'
>>> x
'Hello world!'
知识点:除了直接加引号赋值外,还可以使用Python内建函数str()进行操作,点击链接查看详细使用说明。
你可以看到,用我们通常人类的语义理解这句话,它里面包含了两个单词、一个空格和一个感叹号,当机器读取时,需要首先将字符串拆分为每个字符读入,然后再进行后续处理。那么这句话里一共包含了12个字符,即便空格和感叹号也是字符。说到字符,我们又不得不提到Unicode,给大家提供两处参考引用:
看过参考资料后我们可以知道,每个字符对应一个代码点,从Python 3开始的编码规范统一采用“utf-8”,即Unicode 8位编码。那么关于如何查看每个字符的代码点,及如何将代码点转换为字符,可以参考Python内建函数chr()和ord()的详细使用说明。
序列
序列似乎与我们数学中所接触的数列有相似之处,数列是由特定规则组成的数字序列,即数列可以说是序列的子类,例如斐波契那数列。那么Python所说的序列中可以包含任意类型数据,当然range除外。而上面所说的文本,也就是文本序列其实是序列的特定形式,文本序列相当于Unicode代码点的不可变序列(后续我会讲到可变序列和不可变序列的区别)。除此之外的特定形式还有二进制序列类型,那么我们在这里所说的序列主要包含以下三种:
列表(list)
列表是一种可变序列,一般形式为“[]”,方括号内的各项间用逗号分隔。列表通常存储同类型的数据,但是它也可以存储混合类型的数据,例如:
# 单一类型
>>> x = [1, 2, 3]
>>> x
[1, 2, 3]
# 混合类型
>>> y = [1, '一', 2, '二']
>>> y
[1, '一', 2, '二']
知识点:除了以上赋值方法外,还可以使用Python内建函数list()进行操作,点击链接查看详细使用说明。
元组(tuple)
元组是一种不可变序列,一般形式为“()”,圆括号内的各项间用逗号分隔。
>>> x = [1, 2, 3]
>>> y = (1, '一', 2, '二')
# 混合类型
>>> z = x, y
>>> z
([3, 2, 1, 4, 7], (1, '一', 2, '二'))
知识点1:上面的案例中采用了两种方式进行元组赋值,即y = (1, ‘一’, 2, ‘二’)和z = x, y,注意这里面用圆括号或者直接用逗号分隔项赋值均可创建元组。
知识点2:除了以上赋值方法外,还可以使用Python内建函数tuple()进行操作,点击链接查看详细使用说明。
区间(range)
range通常表示某个范围内的连续数字,但我更愿意称它为区间。区间属于不可变序列,在我看来它属于特殊的元组,即在某个区间内有连续数字项的元组,形式如下:
>>> range(10)
range(0, 10)
知识点:区间的详细用法参考Python内建函数range()进行操作,点击链接查看使用说明。
数据间相互转化
以上提到的三种数据类型——数字、文本和序列,可以在一定范围内转化,下面就说一下可转化的类型:
数字转化为字符串
>>> x = 1
>>> y = 3.14
>>> z = 3 + 5j
>>> s1 = str(x)
>>> s2 = str(y)
>>> s3 = str(z)
>>> s1
'1'
>>> s2
'3.14'
>>> s3
'(3+5j)'
采用str()内建函数进行操作,注意字符串不能直接转换为数字。
列表、元组和区间转换
>>> x = [14, 3, 8, 7, 5]
>>> y = ('Hello', ' ', 'world', '!')
>>> z = range(10)
# 列表和元组间互相转换
>>> x1 = tuple(x)
>>> x1
(14, 3, 8, 7, 5)
>>> y1 = list(y)
>>> y1
['Hello', ' ', 'world', '!']
# 区间转换为列表或元组
>>> z1 = list(z)
>>> z1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> z2 = tuple(z)
>>> z2
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
采用list()或tuple()内建函数进行操作,注意列表/元组不能转换为区间。
字符串 、列表/元组间转换
# 列表/元组转换为字符串
>>> y = ('Hello', ' ', 'world', '!')
>>> s = ''
>>> for i in y:
s += i
>>> s
'Hello world!'
# 字符串转换为列表/元组
>>> z = []
>>> for i in s:
z.append(i)
>>> z
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
上述的转化过程涉及到了for循环语句和列表的append()方法,这些会在后续的内容中讲到。注意元组没有append()方法,因此字符串只能转换为列表,如果需要输出结果为元组,那么可以再tuple()一下。
可以发现当采用迭代方法将字符串转换为列表时,输出结果与我们预想的结果,即类似y的值有所不同,这会在后续内容中详细的提供解决办法。
综述
本文中针对入门学习的人员,主要讲解了三种常用数据类型以及简单的数据赋值创建方法,其实除此之外,数据类型还有很多种,例如布尔型、迭代器、二进制序列、集合等。那么这些类型会结合实际案例一并讲解。关于数据的处理,数据处理并不仅限于本文中所提及的内容,譬如数字类型数据还可以进行数学运算,序列类型还有切片、排序等方法,那么这些方法同样会想本文中提及的,以引文链接的方式在日后的实例中给出详细解答。
说明
本文中所引用的CSDN中Python内建函数的文章,均是我本人所写,目前还在缓慢的推进中,其中不免出现翻译的纰漏,还望指正。