Python数据类型串讲(中) 1、序列 1.1 序列简介 所谓序列,即元素的有序排列。序列中每个位置的元素都有其对应的唯一编号,也就是说我们可以通过元素的位置标识,去搜索到该元素。python中的内建序列有6种:列表、元祖、字符串、Unicode字符串、xrange对象、buffer对象,其中列表和元祖是最常见的序列,应重点掌握。字符串在上一篇文章中已简单介绍,下面将以字符串为例,对序列的通用操作进行详讲。 1.2 序列通用操作 •索引(indexing) 序列的索引即上文介绍的序列中元素的位置标识,按标识顺序分为正向递增序号(简称正序)和逆向递减序号(简称逆序)。正序标识即由左往右,索引从0开始递增,索引为0表示第一个元素,索引为1表示第二个元素,以此类推。以变量x="HELLOWORLD!"为例: 逆序标识即由右往左,索引从-1开始,索引为-1表示逆序第一个元素,索引为-2表示逆序第二个元素,以此类推。以字符串"HELLOWORLD!"为例: 1/10 根据字符串的索引,我们可以提取出对应位置上的元素,例如需要提取字符"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] #使用正索引,步长为2 x[-6:-1:2] #使用负索引,步长为2 ############ 提取字符"LRO"########### x[-3:-6:-1] #使用负索引,逆序提取 x[9:6:-1] #使用正索引,逆序提取 ############ 正序提取所有字符########## x[::] #三个参数皆可省略 ############ 逆序提取所有字符########## x[::-1] #步长为-1,不可省略 2/10 注意:正序提取时,起始索引应小于结束索引;逆序提取时,起始索引应大于结束索引,否则返回值为空序列[]。 •相加(adding) 序列中类型相同的序列可以进行加法操作,即把两个或多个序列拼接起来,注意不是数值上的加法运算(元素为数字型时容易混淆)。 x1="talkis cheap" x2="," x3="show me the code" print(x1+x2+x3) 以上代码执行结果为: •相乘(multiplying) 类似于数学运算上的乘法运算,一个序列乘上一个正整数n,相当于将该字符串重复n次连接成一个新序列。 x="python" print(x*3) 以上代码执行结果为: •元素存在判断 使用python的关键字"in"或"not in",可以判断指定元素是否存在该序列中或是否不存在该序列中,满足条件则返回True,不满足条件则返回False 。 x="python" "t" inx "i" inx 以上代码执行结果为: •序列相关BIF –len():返回序列所含元素的数量 –max():返回元素中的最大值 3/10 –min():返回元素中的最小值 x="python" len(x) max(x) min(x) 当序列中元素的类型是字符串型时,使用max()或min()将对字符串进行按位比较,即对字符串中各元素的ascii码进行比较,输出最大值或最小值。 2、列表 在对序列有了大体的认识后,现在开始介绍序列中最具代表性的数据类型——列表。 python中列表以中括号"[ ]"为标识,将一个或多个元素(以逗号分隔)括起来为一个列表,其元素可以为python中任意一种数据类型包括列表本身,且各元素不需要具备相同的数据类型。列表可以简单理解为我们日常生活中超市每天的购物记录,其中每个人的购物记录为列表中的元素,每个人可以购买不同类型的物品,且购买数量往往不一致。 #创建列表x_list x_list=[2333,"python",["a","b","c"]] print(x_list) 以上代码执行的结果为: 除了上面1.2节介绍的序列通用操作外,列表还有其他一些比较常用的操作。 2.1 元素的更新 2.1.1 元素的修改 列表通过直接对元素的索引位置赋新值来修改元素。 语法:变量名[需修改元素的索引]=新值 #将变量x_list索引为0的元素修改为2222 x_list[0]=2222 print(x_list) 以上代码执行结果为: 2.1.2 元素的删除 列表通过对元素的索引位置,使用del语句来删除列表的元素。 del 列表名[需删除元素的列表] 4/10 #删除变量x_list索引为1的元素 del x_list[1] print(x_list) 以上代码执行结果为: 2.2 常用方法 2.2.1 元素的增加 •append():在列表最后添加一个新的元素 语法:列表名.append(添加的元素) #在列表x_list最后添加元素"MySQL" x_list.append("MySQL") print(x_list) 以上代码执行结果为: 注意:若添加的新元素为列表,append()会保存其列表形式添加到最后 #在列表x_list最后添加元素["MySQL","SPSS"] x_list=[2333,"python",["a","b","c"]] x_list.append(["MySQL","SPSS"]) print(x_list) 以上代码执行结果为: •extend():在列表最后添加一个新列表内的多个元素 语法:列表名.extend(添加的列表) 与方法append()不同,extend()中添加的元素只能是列表类型,且不保存其列表形式,即将需要添加的列表里的元素一一提取出来后再添加到原列表。 x_list=[2333,"python",["a","b","c"]] x_list.extend(["MySQL","SPSS"]) print(x_list) 以上代码执行的结果为: 5/10