python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称她们为容器类型的数据
集合、序列、字典、列表、元组
======================
序列
序列(sequence)是一种可迭代的,元素有序的容器类型的数据
序列包括列表(list),字符串(str),元组(tuple)和字节序列(bytes)等
序列的索引操作
序列中的元素都是有序的,每个元素都带有序号,序号叫做索引,索引有正值索引和负值索引之分
正值索引:第一个元素的索引是0,从左往右以此增加
负值索引:最后一个元素的索引是-1,从右往左递减
如何访问序列中的元素?
下标运算符:跟在容器数据后的一对方括号[],在这对方括号之间有参数,对于序列类型的数据,
该参数就是元素类型的索引
a='hello',-----a[0]=h
a="hello" print(a[0])#h print(max(a))#o print(min(a))#e print(len(a))#5此处索引最大值为4,若a[5]超出索引范围,则会发生IndexError错误
max()函数用于返回序列的最大值,对于数字序列,返回最大值,对于字符串,返回ASCII或Unicode值最大的字符
min()函数,用于返回序列的最小值,对于数字序列,返回最小值,对于字符串,返回ASCII或Unicode值最大的字符
len()函数用于获取序列的长度,注意是序列长度不是序列范围最大值,如例所示,序列范围以0开始,以4结尾,但长度是5
==========================
加+与乘*操作
*:‘six’*2-------'sixsix'
+:'six'+'seven'--------'sixseven'
a="six" b="seven" print(a*3)#sixsixsix print(a+b)#sixseven============================
切片操作
对序列进行切片(Slicing)操作就是从序列中切分出小的子序列
切片运算符的语法:[start:end:step]
start:开始索引
end:结束索引
step:步长(切片时获取元素的间隔,既可以是正整数,也可以是负整数)
!!!切下的子序列包含start位置的元素,但不包含end位置的元素,start和end都可以省略
#====切片操作==== a="zxcvbnm" print(a[1:3]) #xc 不包含3 print(a[:3])#zxc 不包含3 #省略了开始索引,默认索引开始是0,所以a[:3]和a[0:3]一样 print(a[0:3])#zxc 不包含3 print(a[0:])#zxcvbnm #忽略了结束索引,默认结束索引是序列的长度,即7,所以a[1:]和a[1:7]的切片结果是一样的 print(a[0:7])#zxcvbnm print(a[:])#zxcvbnm #省略了开始索引和结束索引,a[:]和a[0:7]切片结果一样 print(a[1:-1])#xcvbn #1是正值索引,表示字符串的第二个元素;-1是负值索引,表示字符串的最后一个元素 print(a[0:3:2])#zc #开始索引为0,结束索引为3,步长为3 print(a[::-1])#mnbvcxz #步长为负值时,从右往左获取元素,所以[::-1]的切片结果是原始序列中元素的倒置 print(a[0:3:-1]) #a[1:3]---开始索引为1,结束索引为2,省略步长(默认值为1)
print(a[0:3:2])画出相关实例图
索引: 0 1 2 3 字符: z x c v ↑ ↑ start=0 start+step=2 ↓ ↓ 取 z 取 c 结果:zcprint(a[1:3:-1])
start=0,end=3,step=-1,步长是负值,从右往左取
从索引0开始,往左取,但end=3在start的右边
方向冲突:start在end左边,但步长是负的要往左走---永远走不到end---结果为空
索引: 0 1 2 3 4 5 6 字符: z x c v b n m ↑ ↑ start=0 end=3(不包含) 步长 = -1(往左走)→ 从 0 往左,没有元素 → 空从右往左取值
x='xcvbnm' print(a[5:0:-1)#输出:mnbvc #start:索引5:m包含在内 #end:索引0:x不包含在内 #步长:-1----从右往左取数===================成员测试
成员测试运算符:in , not in
in:用于测试是否包含某个元素
not in:测试是否不包含某个元素
#=======测试 a='qwert' if 'e' in a: print("True") else: print("False") #True b='asdf' if 'z' not in b: print("True") else: print("False") #True