要明确一个重要的概念,字符串在python中是序列。例如,如果我们有一个含有四个字符的字符串,我们通过内置的len函数验证它的长度,通过索引操作区的各个元素。
s='spam'len(s)#4s[0]#'s's[1]#'p'
在python中,索引是从0开始,如此类推。大家要留意一个地方,python变量不需要提前声明,赋值给它的时候就创建了它,可以赋值任何类型的对象。
我们除了正向索引,还可以反向索引:
s[-1]#'m's[-2]#'a'
所以,如果取得字符串最后一位有两个方法,一个是反向索引取,一个是正向取最后一位索引号。
s[-1]s[len(s)-1]
除了索引,序列还支持分片操作,例如
s[1:3]#pa
大家会发现,1:3 只取了两位字符,这个我后来反现,python好多时候的范围操作都是前开后闭,就是[1:3] 实际包含的只是1,2。除了常规的切片操作,还有一些变体操作,例如
s[1:]#'pam's[:3]#'spa's[:-1]#'spa's[:]#'spam'
除此之后,字符串也有其他一些运算操作:
s+'xyz'#'spamxyz's-'pa' #TypeError: unsupported operand type(s) for -: 'str' and 'str's*2#'spamspam's/2 # TypeError: unsupported operand type(s) for /: 'str' and 'int'
字符串还有一个重要的特性,就是不可变性,就是说不能通过对某一个位置进行赋值而改变字符串。例如:
s='spam's[0]='z'#TypeError: 'str' object does not support item assignmenter
列表也是序列的一种,也具备有索引,切片的功能。
L=[134,'lbj',34.3]L[0]L[-1]len(L)L[:-1]L+[1,2,3]L*2#134#34.3#3#[134, 'lbj']#[134, 'lbj', 34.3, 1, 2, 3]#[134, 'lbj', 34.3, 134, 'lbj', 34.3]
列表还有一些特定的操作,例如列表是没有固定类型的约束,可以一个列表包含多种类型,而且列表没有固定的大小,可以按照需求随时增加或者减少列表大小。但是要主要的是列表不允许引用不存在的索引元素,例如:
L[10] #IndexError: list index out of range
列表有两个比较重要的操作,增加和减少:
L.append('wo') L.pop(0) # 括号里面是索引号L#['lbj', 34.3, 'wo']
列表的嵌套,列表中嵌套列表,这个可以理解为是其他编程语言中的数组:
M=[[1,2,3],[2,6,7],[5,4,7]]M[1]M[1][2]#[2, 6, 7]#7
python中的字典是完全不同的东西,它不是序列,而是一种映射,简单理解就是键映射到值,具有可变性,可以随时增加和减少。我们看一个例子:
D={'name':'lbj','color':'yellow','qt':5}
这个字典包含了三个元素,不是6个,它的键分别为:'name','color','qt'。然后字典的索引不是数字,而且键,而且可以进行运算。
D['name']D['qt']+=1D#'lbj'#{'name': 'lbj', 'color': 'yellow', 'qt': 6}
字典还有不同的创建方法:
D={}D['name']='jack'D['job']='worker'D['age']=28D#{'name': 'jack', 'job': 'worker', 'age': 28}
字典的嵌套操作,这个也复杂一些,先看一下例子,例子中字典嵌套了字典和列表,其实操作是跟一样的,只是需要搞清楚取出的值是列表还是字典,或者是字符串。
R={'name':{'first':'LEE','last':'jack'}, 'job':['worker','manger'], 'age':28}R['name']R['name']['last']R['job'][-1]#{'first': 'LEE', 'last': 'jack'}#'jack'#'manger'
字典的迭代,我在学for循环的时候再给大家介绍吧。
元组就是一个不可以改变的列表,它也是序列,具有不可以改变性,语法上编写的是圆括号。
T=(1,2,3,4)T[0]len(T)#1#4
元组有两个专用的方法:
第一个是查询4的在元组的位置,就是索引号。第二个是查询2的在元组里面的出现次数。
T.index(4) T.count(2)#3#1
在学习索引的时候,在教程中会常常遇到一些索引类似:
T='123456abc'T[::2]#'135ac'
这里要给大家扩展一个知识点,切片的完整写法的[起点:终点:步长]。T[::2] 的意思是,取整个列表,从0开始,步长为2,就是1,3,5,a,c。
今天的学习就到这里了,因为元组不常用,所以介绍的边幅比较少,主要是列表和字典比较重要。如果大家有疑问的可以留言给我,明天我们学习一下Python的分支结构。