配色: 字号:
Python数据类型串讲(中)
2020-03-25 | 阅:  转:  |  分享 
  
Python数据类型串讲(中)1、序列1.1序列简介所谓序列,即元素的有序排列。序列中每个位置的元素都有其对应的唯一编号,也就是说我们可
以通过元素的位置标识,去搜索到该元素。python中的内建序列有6种:列表、元祖、字符串、Unicode字符串、xrange对象、
buffer对象,其中列表和元祖是最常见的序列,应重点掌握。字符串在上一篇文章中已简单介绍,下面将以字符串为例,对序列的通用操作进
行详讲。1.2序列通用操作索引(indexing)序列的索引即上文介绍的序列中元素的位置标识,按标识顺序分为正向递增序号(简称
正序)和逆向递减序号(简称逆序)。正序标识即由左往右,索引从0开始递增,索引为0表示第一个元素,索引为1表示第二个元素,以此类推。
以变量x=''HELLOWORLD!''为例:逆序标识即由右往左,索引从-1开始,索引为-1表示逆序第一个元素,索引为-2表示逆序
第二个元素,以此类推。以字符串''HELLOWORLD!''为例:根据字符串的索引,我们可以提取出对应位置上的元素,例如需要提取字
符''R'',可以使用正索引即''x[8]''去提取,也可以使用逆索引即''x[-4]''去提取。x=''HELLOWORLD!''#正序提取x
[8]#逆序提取x[-4]以上代码执行结果为:切片(sliceing)使用索引提取序列元素不需要新创建变量,非常方便,但使用索
引每次只能提取字符串中的单个字符,而实际运用中往往需要一次提取多个字符,这时便可以使用序列的另一特性:切片。切片是指通过序列的索引
提取出指定范围内的元素作为新的序列。语法:obj[startindex:endindex:step]obj:变量名start_
index:[可选参数],切片起始索引,默认为0(正序)或-1(逆序)end_index:[可选参数],切片结束索引,默认为最后一
个元素对应索引(正序),或第一个元素对应索引(逆序)step:切片步长,默认为1注意:序列中切片取值范围为左闭右开,即包含起始索
引,不包含结束位置。x=''HELLOWORLD!''############提取字符''LLO''###########x[2:5:
1]#使用正索引x[-10:-7:1]#使用负索引x[2:5]#步长为1时可省略参数step############提取字符''
WRD''###########x[6:11:2]#使用正索引,步长为2x[-6:-1:2]#使用负索引,步长为2#########
###提取字符''LRO''###########x[-3:-6:-1]#使用负索引,逆序提取x[9:6:-1]#使用正索引,逆序提
取############正序提取所有字符##########x[::]#三个参数皆可省略############逆序提取所
有字符##########x[::-1]#步长为-1,不可省略注意:正序提取时,起始索引应小于结束索引;逆序提取时,起始索引应
大于结束索引,否则返回值为空序列[]。相加(adding)序列中类型相同的序列可以进行加法操作,即把两个或多个序列拼接起来,注
意不是数值上的加法运算(元素为数字型时容易混淆)。x1=''talkischeap''x2='',''x3=''showmethe
code''print(x1+x2+x3)以上代码执行结果为:相乘(multiplying)类似于数学运算上的乘法运算,一个序列
乘上一个正整数n,相当于将该字符串重复n次连接成一个新序列。x=''python''print(x3)以上代码执行结果为:元素存
在判断使用python的关键字“in”或“notin”,可以判断指定元素是否存在该序列中或是否不存在该序列中,满足条件则返回T
rue,不满足条件则返回False。x=''python''''t''inx''i''inx以上代码执行结果为:序列相关BIF
len():返回序列所含元素的数量max():返回元素中的最大值min():返回元素中的最小值x=''python''len(x)ma
x(x)min(x)当序列中元素的类型是字符串型时,使用max()或min()将对字符串进行按位比较,即对字符串中各元素的asc
ii码进行比较,输出最大值或最小值。2、列表在对序列有了大体的认识后,现在开始介绍序列中最具代表性的数据类型——列表。pyth
on中列表以中括号''[]''为标识,将一个或多个元素(以逗号分隔)括起来为一个列表,其元素可以为python中任意一种数据类型包括
列表本身,且各元素不需要具备相同的数据类型。列表可以简单理解为我们日常生活中超市每天的购物记录,其中每个人的购物记录为列表中的元素
,每个人可以购买不同类型的物品,且购买数量往往不一致。#创建列表x_listx_list=[2333,''python'',[''a'',
''b'',''c'']]print(x_list)以上代码执行的结果为:除了上面1.2节介绍的序列通用操作外,列表还有其他一些比较常
用的操作。2.1元素的更新2.1.1元素的修改列表通过直接对元素的索引位置赋新值来修改元素。语法:变量名[需修改元素的索引
]=新值#将变量x_list索引为0的元素修改为2222x_list[0]=2222print(x_list)以上代码执行结果为
:2.1.2元素的删除列表通过对元素的索引位置,使用del语句来删除列表的元素。del列表名[需删除元素的列表]#删除变量
x_list索引为1的元素delx_list[1]print(x_list)以上代码执行结果为:2.2常用方法2.2.1元
素的增加append():在列表最后添加一个新的元素语法:列表名.append(添加的元素)#在列表x_list最后添加元素''My
SQL''x_list.append(''MySQL'')print(x_list)以上代码执行结果为:注意:若添加的新元素为列表,ap
pend()会保存其列表形式添加到最后#在列表x_list最后添加元素[''MySQL'',''SPSS'']x_list=[2333,''
python'',[''a'',''b'',''c'']]x_list.append([''MySQL'',''SPSS''])print(x_list
)以上代码执行结果为:extend():在列表最后添加一个新列表内的多个元素语法:列表名.extend(添加的列表)与方法ap
pend()不同,extend()中添加的元素只能是列表类型,且不保存其列表形式,即将需要添加的列表里的元素一一提取出来后再添加到
原列表。x_list=[2333,''python'',[''a'',''b'',''c'']]x_list.extend([''MySQL'',''S
PSS''])print(x_list)以上代码执行的结果为:insert():根据指定索引插入新的元素语法:列表名.insert
(插入位置的索引,插入的元素)#在变量索引为1的位置插入元素''MySQL''x_list=[2333,''python'',[''a'',''
b'',''c'']]x_list.insert(1,''MySQL'')print(x_list)以上代码执行结果为:2.2.2元素的删
除pop():删除指定索引(默认为-1)对应的元素,并返回所删除的值语法:列表名.pop(索引值)#删除变量中索引为1的元素x_l
ist=[2333,''python'',[''a'',''b'',''c'']]x_list.pop(1)print(x_list)以上代码执
行结果为:remove():删除指定元素,若匹配到多项,仅删除匹配到的第一项语法:列表名.remove(''需删除的元素'')#删除指
定元素''a'',仅删除匹配到的第一项z_list=[''a'',''b'',''c'',''a'']z_list.remove(''a'')print(
z_list)以上代码执行结果为:clear():清空列表里所有元素,返回一个空列表语法:列表名.clear()#清空变量x_l
ist的所有元素x_list=[2333,''python'',[''a'',''b'',''c'']]x_list.clear()print(x
_list)以上代码执行结果为:2.2.3元素的查找index():查找元素首次出现位置对应的正索引语法:列表名.index(查
找的元素,起始索引,结束索引)#查找元素''python''在变量x_list中首次查找到位置的索引x_list=[2333,''pyt
hon'',[''a'',''b'',''c'']]x_list.index(''python'')以上代码执行的结果为:注意:若查找的元素不在
该列表中会报错误提示。count():查找元素在该列表中出现的次数语法:列表名.count(查找的元素)#查找元素''python''
在变量x_list中出现的次数y_list=[2,3,4,5,2,2,3]y_list.count(2)以上代码执行结果为:注
意:列表中没有方法find()。2.2.4元素的排序sort():对列表元素进行排序,返回元素按升序(默认)或降序排列的列表语法
:列表名.sort(reverse=True/False)reverse:可选参数,默认为True即升序,若为False即降序#对
变量y_list的元素进行降序排列y_list=[2,3,4,5,2,2,3]y_list.sort(reverse=True)p
rint(y_list)以上代码执行结果为:reverser():将列表内元素按逆序排列语法:列表名.reverser()#对y_
list的元素进行逆序排列y_list=[2,3,4,5,2,2,3]y_list.reverser()print(y_list)
以上代码执行结果为:2.2.5列表的复制copy():用于复制列表用法:列表名.copy()y_list=[2,3,4,5,2,
2,3]y=y_list.copy()print(y)以上代码执行结果为:注意区分赋值、浅复制copy()、深复制deepco
py():赋值:对象的简单引用浅复制:复制列表的父对象,但不复制对象内部的子对象深复制:复制列表的父对象及子对象,需先导入copy
模块2.3常用内置函数除了序列通用的内置函数:len()、max()、len(),列表还含有以下内置函数:list():将其他
类型强制转化为列表zip():将多个列表或元祖(后续会介绍)对应位置的元素组合为元祖,返回zip对象enumerate():将一
个可遍历对象(如列表、字符串)组合成一个含数据和数据索引的序列3、元祖3.1元祖简介元祖与列表一样是python的一种序列类型
,可以使用序列的所有通用操作。元祖在python中以小括号“()”为标识,将一个或多个元素(以逗号分隔)括起来为一个元祖,其用法与
列表非常类似,二者主要区别在于,列表内的元素可以修改,元祖内的元素不能修改,可以简单把元祖理解为列表的一个“可读版本”。#元祖的创
建x_tuple=(''a'',2,[3,4])print(x_tuple)#元素修改会报错x_tuple[1]=3以上代码执行结果
为:注意:创建只有一个元素的元祖时,需要在后面加一个逗号,否则会返回元素本身。因为在python中小括号“()”同时也是数学运算
上的一个基本符号,如(1+1)^2,如果创建只有一个元素的元祖时不加逗号分隔,python解释器会将小括号识别为数学运算符号。y_
tuple=(2333,)print(y_tuple)z_tuple=(2333,)print(z_tuple)以上代码执行结果
为:3.2常用方法及内置函数3.2.1常用方法由于元祖的元素不可变性,元祖无法对元素进行增加、删除、排序及复制操作,元祖中元
素的查找与上述列表中用法一致。x_tuple=(''a'',2,[3,4])#元素的查找x_tuple.index(''a'')#元素的复
制x_tuple.count(2)以上代码执行的结果为:注意:当元祖中所含元素为列表(可变序列)时,该列表嵌套项是可变的。x_
tuple=(''a'',2,[3,4])#修改列表[3,4]中的元素,元祖也随之''变化''x_tuple[2][1]=3print(x
_tuple)以上代码执行结果为:3.2.2常用内置函数len(tuple):返回元祖元素的个数max(tuple):返回元祖元素最大值min(tuple):返回元祖元素最小值tuple(seq):将序列转换为元祖3.2.3选择元祖or列表特点:列表:动态存储,长度大小可变,可对元素进行增删查改等操作,但储存内存较大,性能偏差;元祖:静态存储,长度大小固定,不可随意更新数据,内存占用空间小,处理速度快;使用场景:列表:需随时对数据进行更改,不考虑性能;元祖:1.数据需要被“锁定”,不能随意更改;2.对性能有要求,如遍历;3.作为数据结构的一部分,如字典的keyCDA数据分析师(CDA.cn)——真本事,心舒适!
献花(0)
+1
(本文系CDA数据分析...原创)