Python的基础数据类型
学习任何一门编程语言,在入门阶段要重点把握两个方面,一是学习基础变量类型的种类和使用;二是学习基本的语法,基本语法包括代码结构、循环、条件。在该部分,将首先介绍Python的基本数据类型,除基础数据类型外,Python还构建了相对更复杂的数据类型,如array、DataFrame等,这些较为复杂的数据类型,将在后续的库中进行详细介绍。
学习python的目标是能够使用python做出相应的模型支持业务或自动化某些数据工作。如果把这个过程比作建造一个机器,那python的基础数据类型就是建造机器所需要的材料,基本语法是改造材料的工具,两者缺一不可。所以不止是python,对于所有编程语言而言,学习相应的数据类型和基本语法都是最重要的部分。
在这一部分将介绍两部分的内容:变量和基础数据类型。由于介绍内容较多,所以先建立一个简单的知识框架:
1 变量
在介绍基本数据类型前,需要先来了解下变量。大家最早接触变量应该是在数学上,比方说函数f(x),大家都知道对于给定的函数形式,f(x)会随着x的值变化而变化,在这里x就是变量。变量是一个指代,其数值可以发生改变。变量的优点是,可以便捷的替换值,而不用每次都去逐一修改。
python中定义变量的方法很简单,直接使用字母、数字和下划线即可实现命名,但是不可以数字开头。同时需要注意的是,变量名不可使用Python的保留关键字,所谓保留关键字就是Python已经将这些关键字内置有具体的作用,不能用于变量命名。Python的保留关键字有以下35个:
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'
变量赋值也很方便,在python中使用=进行赋值,==表示相等。比方说定义一个变量a,给其赋值1,在使用python的代码是
a = 1
讲完变量的定义,那变量可以被赋哪些值呢?这就涉及到python中的变量类型。
2 基础数据类型
Python的数据类型可以分为两类,一是基础数据类型,二是加载库中的数据类型。基础数据类型也就是在Python中内置数据类型,包括:数字型、字符型、布尔型、列表、元组和字典。加载库中的数据类型包括:日期、数组(Numpy库)、序列(Pandas库)、数据框(Pandas库)等。由于Python有着非常丰富的库,所以数据类型也比较多,对于入门学习而言,掌握基础数据类型即可,当使用某些库中的某些数据类型时,借助帮助文档即可快速学习。加载库中的数据类型将在常用库中介绍,在这里主要介绍Python的基础数据类型。
Python的数据类型是弱数据类型,而C、Java等是强数据类型。弱数据类型在定义变量时不需要指明变量类型,且在使用过程中可以随时改变;强数据类型在定义变量时便要指定数据类型,并且仅能赋值相同类型的数据。举个例子来说明弱数据类型。
a = 1 print(a) print(type(a)) a = 2.3 print(a) print(type(a)) a = "abc" print(a) print(type(a)) a = [1,2,3] print(a) print(type(a)) a = (1,2,3) print(a) print(type(a)) a = {"chinese":"90"} print(a) print(type(a))
代码中的type(a)是查询a的数据类型,上述代码的运行结果如下:
1 <class 'int'> 2.3 <class 'float'> abc <class 'str'> [1, 2, 3] <class 'list'> (1, 2, 3) <class 'tuple'> {'chinese': '90'} <class 'dict'>
当赋值为1时,变量a的数据类型是整数;赋值是2.3,变量a的数据类型是浮点数;赋值是[1,2,3]时,变量a的数据类型是list列表;赋值是(1,2,3)时,变量a的数据类型是tuple元组;赋值是{'chinese': '90'}时,变量a的数据类型是dict字典。
2.1 数字型
对数字类型的介绍包括以下几个方面:
2.1.1 数字型的子类别
python的数字型有三种:整数型(int)、浮点数型(float)和复数型(complex)。三种类型也比较简单,分别用于标识整数、小数和复数。其中复数型有两种赋值方法,一种是通过m+nj的形式,m是实部,n是虚部(当n取1时,也不可省略);另一种是通过complex(m,n),m和n的含义同第一种。
a = 1 print(a) print(type(a)) b = 2.2 print(b) print(type(b)) c = 1+1j print(c) print(type(c)) d = complex(1,2) print(d) print(type(d))
输出结果如下:
1 <class 'int'> 2.2 <class 'float'> (1+1j) <class 'complex'> (1+2j) <class 'complex'>
2.1.2 数字型的运算
关于数字型的运算,可以分为对数字自身进行计算和数字之间的计算。
对自身的进行运算,包括绝对值等函数。
函数 含义 样例 绝对值abs() 将数字转换为非负数 abs(-1) = 1 四舍五入round(m,n) 对数据进行四舍五入,并保留n位小数 round(1.22,1) =1.2 向下取整floor() 获得不大于指定数值的最大整数 math.floor(-1.1) = -2 向上取整ceil() 获得不小于指定数值的最小整数 math.ceil(1.1) = 2 e的n次幂exp(x) 表示e^x math.exp(2) = 7.38905609893065 以e为底的x的对数log(x) 假设log(x) = y,则满足e^y = x math.log(math.e) = 1 以10为底的x的对数log10(x) 与log(x)的区别是此时底数为10 math.log(100) = 2 算数平方根函数sqrt(x) 表示获取x的算数平方根 math.sqrt(4) = 2 π数字常量math.pi 圆周率π math.pi = 3.141592653589793 e数字常量math.e 自然常数 math.e = 2.718281828459045 需要注意的是python的round并不是严格的四舍五入,round(1.25,1) = 1.2,并不是1.3;但是round(1.35,1) = 1.4。
除对自身进行运算外,还可以对不同数字之间进行运算
函数 含义 四则运算+-*/ 实现数字之间的加减乘除 取余 m%n 表示m/n的余数 9%2 = 1 整除m//n 表示m/n的整数部分 9//2 = 4 幂运算m**n或pow(m,n) 表示m^n 2**3 = 8 最大值max(m,n) 表示取变量中的最大值 最小值min(m,n) 比较 == , != , < , <= , > , >= 进行数字之间大小的比较,==进行是否相等判断,!=进行不相等判断 以上基本涵盖常用的数字的运算,需要注意的是,在这里的介绍中,使用了math库,python强大的地方在于各种方便使用的库,math库中集成了各种常用的数字计算函数。在使用python库时,使用import 库名称则可以加载库,在使用库中的函数时,使用库.函数名称即可。如使用math库中的向下取整函数,使用方法是math.ceil(1.32)。
2.2 字符串
2.2.1 字符串的定义
字符串是文本,在创建字符串时需要使用单引号('')或双引号("")括起来,单引号和双引号在使用上无区别。如果字符串中包含单引号,则使用双引号括起来表示这一字符串;如果字符串中包含双引号,则使用单引号括起来表示这一字符串;如果既有单引号,又有双引号,则使用转义符号"\"对字符串中的符号进行转义(转义就是消除符号的含义,只是单纯的展示)。
a = "abc'dd'ee" b = 'abc"dd"ee' c = 'abc\'dd\'ee' d ="'abc\"dd\"ee'" print(a) print(b) print(c) print(d)
运行结果是
abc'dd'ee abc"dd"ee abc'dd'ee 'abc"dd"ee'
既然存在转义符,那哪些是具有特殊含义的符号呢?上面提到的单双引号,此外最常用的还有\n和\t,两者分别表示换行和缩进四个位置。
m = "ab\ncd" n = "ab\tcd" print(m) print(n)
输出结果如下,其中前两行是print(m)的输出,后一行是print(n)的输出。
ab cd ab cd
如果想让这两个字符进行正常实现,则有两种方法,一种是进行转义,也就是将\进行转义;另一种是添加r。
m = "ab\ncd" m_new = "ab\\ncd" n = "ab\tcd" n_new = "ab\\tcd" print(m) print(r"ab\ncd") print(m_new) print(n) print(r"ab\tcd") print(n_new)
输出结果如下:
ab cd ab\ncd ab\ncd ab cd ab\tcd ab\tcd
2.2.2 字符串的运算
字符串的运算,包括以下四个方面的基本运算,其中字符串的索引是相对负责而且重要的内容,必须学明白。
字符串的索引
首先来理解下索引这一概念,索引是位置的概念,字符串是有一个或多个字符构成的,字符之间是存在先后顺序的,有先后顺序后就有了位置,具体的位置数值就是索引。如字符串"abc",由三个字符构成,a在b前面,b在c前面,也就是位置确定好了,那具体是第几位,第几位就是索引。在python中,索引都是从0开始计数的,所以a的索引是0,b的索引是1,c的索引是2。在获取索引后,就可以获取字符串的子集,在python中使用[索引值]获得子集。索引值可以是单个的数值,也可以是一个区间。索引除可以为正值外,还可以是负值,负值的意思是倒着排,也就是从右往左的顺序。
str1 = "abcdE" print(str1[0]) print(str1[4]) print(str1[-1]) print(str1[0:4])
输出结果如下
a E E abcd
str1[0]表示获取字符串排名第一位的字符,也就是a;str1[4]表示获取字符串排名第5位的字符,也就是E;str1[0:4]表示获取字符串由第1位到第4位的数据,也就是abcd,需要注意的是[0:4]是包含[0]但是并不包含[4]。
上面的索引是选取连续子集,那如果不想选择连续子集,而是想获取分割的子集,就需要在索引中加入步长,也就是按照[start:/end:step]的方式去选择子集。
print(str1[0:5:2])
上述代码的含义是从0开始,每次隔一个选取字符,运行结果如下:
acE
选择的索引值就是0、2和4。[0:5:2]中的5在字符串中是没有对应字符的,所以在使用中如果选择直接字符串的最后,是可以直接省略掉end的索引的。也就是说使用print(str1[0::2])可以获取到相同的结果。既然从左到右可以实现字符串的选择,那从右到左也是可以的,只不过这时候步长设置为负值。
print(str1[4::-2])
运行结果是Eca。
字符串的属性
字符串作为一个变量,其属性是长度,可以使用len()函数去计算字符串的长度。字符串的长度是指字符串包含的字符个数,其中空格也算作一个字符。
print(len("a b c"))
上述代码的运行结果是5,表示包含5个字符。
字符串的操作:拼接&重复
字符串的拼接,python中有比较多的方法,先从最简单的开始入门,后续逐步拓展。字符串拼接的方法就是“+”,字符串是可以直接相加的,相加的背后就是字符串的拼接。
str1 = "abc " str2 = "cde" print(str1 + str2) print(str2 + str1)
上述代码的运行结果如下:
abc cde cdeabc
字符串的除了拼接,还可能会出现需要重复的情况,字符串是可以直接使用*进行运算的,只不过*后面必须跟正整数。
str3 = "abc" print(str3 * 2)
运行结果如下:
abcabc
字符/字符串与字符串之间的关系
判断某一字符或字符串是否被包含在另外一个字符串中,则可以使用in和not in函数,该函数返回的结果是布尔类型。
print("ab" in "abc") print("a" not in "abc")
运行结果是
True False
除了in和not in,还有是否相等的判断,这就与数字中的运算是相同的,都是使用==和!=判断是否相等,返回结果是布尔类型。
print("a" == "abc") print("a" != "abc")
返回的结果是
False True
2.3 布尔型
2.3.1 布尔型的定义
布尔型变量只有两个:True和False(注意仅首字母大写)。布尔类型本质上是int数据类型,但是由于布尔类型的特殊性,也可以将其作为单独的数据类型。
print(True + 4) print(False + 6)
输出5和6。说明True就是1,False就是0。布尔型主要用于判断,表示语句产出的结果
print(3>2)
结果自然是输出True。基于这种判断可以分条件执行不同的语句。
2.3.2 布尔型的运算
布尔类型最重要的运算是逻辑运算,也就是or(或) and(且)和not(非)。or运算中是只要存在一项真,则结果为真;and运算中只要存在一项假,则结果为假;not运算是转换运算结果,原本结果为真,使用not则变为假。在涉及逻辑运算时,建议写清楚括号,避免计算逻辑混乱。
print(True and False) print(True or False) print(not False) print(not True)
输出结果如下:
False True True False
2.4 列表
2.4.1 列表的定义
列表是python编程中使用非常方便的数据类型,列表可以看做一个容器,这个容器中可以放置各种变量类型。列表的定义比较方便,使用[ ]定义即可,容器内的各种变量,使用逗号分隔开。尽管列表内可以放置各种变量,但列表使用场景最多的情形还是变量是同一类型的变量。当列表中不包含元素时,此列表为空列表[]。
a = [1,2,3,"abc",True,[
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
数据分析入门技术篇