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
– 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 列表名[需删除元素的列表]
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