三、python序列:字符串、列表、元组类型
序列:即为有序排列,可通过下标访问到一个或多个成员,则统称为序列,包括:字符串(普通字符串+unicode字符串)、列表、元组类型。
1. 区分不同序列:
字符串:以' str '或" str "
列表: [ list ] ---- 值可更改
元组:(tuple)----值不可更改
str1 = 'i am a good girl' list1 = [1,2,3,4,5] tuple1 = (5,4,3,2,1)
2. 标准类型操作符(适用于序列)
3. 序列类型操作符
-- 成员关系操作符
str1 = 'i am a good girl' list1 = [1,2,3,4,5] tuple1 = (5,4,3,2,1) #判断某个元素是否属于某个序列,属于返回True,不属于返回False print('a' in str1) #True print(1 not in list1) #False print(5 in tuple1) #True
-- 连接操作符【可以把一个序列和另一个相同类型的序列做连接】
str1 = 'i am a good girl' str2 = ',hahaha' print(str1+str2) #得到一个新的str:'i am a good girl,hahaha'
-- 重复操作符
str1 = 'i am a good girl' print(str1 * 2) #得到一个新的str:'i am a good girli am a good girl'
-- 切片操作符
str1 = 'i am a good girl' list1 = [1,2,3,4,5] tuple1 = (5,4,3,2,1) #通过角标取值 print(str1[3]) #m print(list1[3]) #4 print(tuple1[3]) #2
通过切片取值:sequence(序列名)[xx:xx:xx] 初始角标:结束角标:步长
#定义一个长度为5的序列,如list list = [5,6,7,8,9] print(list) #取出所有的值[5,6,7,8,9] print(list[:]) #取出所有的值[5,6,7,8,9] print(list[3]) #8 print(list[-1]) #9 print(list[2:]) #[7,8,9] print(list[1:3]) #为前闭后开区间 [6,7] print(list[0:4:2]) #前闭后开且隔一个打印 [5,7] #扩展用法 print(list[::2]) #隔一个取一个 [5,7,9] print(list[::-1]) #'翻转'取值 [9,8,7,6,5]
练习:
#练习 #1.有一个字符串,想每次都把位于最后的一个字符砍掉 s = 'abcde' ''' s1 = s[:-1] s2 = s1[:-2] s3 = s2[:-3] s4 = s3[:-4] print(s1) print(s2) print(s3) print(s4) #以上分析,通过切片方法可以逐次砍掉最后一个元素,该字符串长度是5时,需要切片-1、-2、-3、-4''' for i in range(-1,-len(s),-1): #[-1,-2,-3,-4] #print(i) print(s[:i])
----------------------------------------------------------------------------------------------------------------------------
适合序列的内建函数:
1. 类型转换:list(),str(),tuple()
#str()虽然也适用于转换为字符串,但是得不到我们想要的结果 s = 'abcde' print(list(s)) #['a', 'b', 'c', 'd', 'e'] print(tuple(s)) #('a', 'b', 'c', 'd', 'e') ss = ('a','b','c','d','e') print(str(ss)) #('a', 'b', 'c', 'd', 'e') print(list(ss)) #['a', 'b', 'c', 'd', 'e']
2. 可操作(具体到每一个序列学习时会有练习。)
enumerate(iter)
len(seq)
max(iter,key=None);min(iter,key=None)
reverse(seq)
sorted(iter,func=None,key=None,reverse=False)
sum(seq,init=0)
zip([it0,it1,...itN])