- 在第一课中学习的数据类型是对单个值的类型进行定义,数据结构是通过某种方式组织到一起的数据元素的集合。组成数据结构的数据元素可以是数字或者字符甚至可以是数据结构。Python中最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号,成为索引,索引从0开始依次往后数。Python包含6中内建的序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。
序列的通用操作包括索引、分片(步长)、加法、乘法、成员资格、长度、最大值、最小值。字符串、元组、列表等序列都可以使用这些操作。
- 索引-通过序列中元素的序号来访问序列中的单个元素
>>> str='love'>>> str[0] ##字符串的索引'l'>>> str[1]'o'>>> str[2]'v'>>> list=['zhao','qian','sun','li']>>> list[2] ##列表的索引'sun'>>> 1,2,3(1, 2, 3)>>> (1,2,3)[1] ##元组的索引2
2.分片-通过索引访问序列中的多个元素
格式:SequenceName[被访问第一个元素的索引:第一个未被访问元素的索引:步长]
>>> msg=[1,2,3,4,5,6,7,8,9]>>> msg[1:5][2, 3, 4, 5]>>> msg[1:8:2][2, 4, 6, 8]
msg[1:5]表示从序列索引为1的元素开始访问,一直到索引为5的元素结束不包含索引为5的元素;msg[1:8:2]表示从序列中索引为1的匀速开始到索引为8的元素结束,且每两个元素访问一次。
如果格式中被访问的第一个元素处没有给出索引,则表示从序列的第一个元素开始访问;如果格式中第一个不需要访问的元素的索引没有给出,则表示从需要访问的第一个元素的索引开始一直访问到序列的最后一个元素,包含最后一个元素。
1 >>> msg=[1,2,3,4,5,6,7,8,9]2 >>> msg[:7] #从序列的第一个元素开始访问截止到索引为7的元素(不包含索引为7的元素)3 [1, 2, 3, 4, 5, 6, 7]4 >>> msg[2:] #从序列中索引为2的元素(包含索引为2的元素)开始访问,一直到序列的最后一个元素(包含序列的最后一个元素)5 [3, 4, 5, 6, 7, 8, 9]
序列中的索引也可以使用负数表示。序列的最后一个元素的索引为-1,倒数第二个为-2向前依次类推。
1 >>> msg2 [1, 2, 3, 4, 5, 6, 7, 8, 9]3 >>> msg[-6:-1]4 [4, 5, 6, 7, 8]
在使用索引的时候要注意,分片中左边的索引对应的元素如果比给出的右边的索引对应的元素晚出现,返回的是一个空的序列。
1 >>> msg2 [1, 2, 3, 4, 5, 6, 7, 8, 9]3 >>> msg[5:2] #索引为5的元素要比索引为2的元素晚出现4 []5 >>> msg[-1:-4] #索引为-1的元素要比索引为-4的元素晚出现6 []
3.步长
在分片中已经说明了步长的作用。步长可以是更大的步长比如2、3。步长设置为n则表示序列中每n个元素访问一次。步长也可以是负数,当步长为负数的时候表示在访问序列中的元素的时候,从后往前访问
1 >>> msg2 [1, 2, 3, 4, 5, 6, 7, 8, 9]3 >>> msg[-1:-8:-2]4 [9, 7, 5, 3]
4.加法
加法运算符可以进行序列的连接操作,字符串拼接中的“+”的使用本质上就是序列的加法。只有相同类型的序列才可以进行加法操作。
1 >>> [1,2,3]+[4,5,6] #列表加法2 [1, 2, 3, 4, 5, 6]3 >>> 'hello'+'world' #字符串加法4 'helloworld'5 >>> (1,2)+(3,4) #元组加法6 (1, 2, 3, 4)
5.乘法
用一个数字n乘以一个序列会返回一个新的序列,新序列重复原来的序列n次。
1 >>> 'i love you'*10 ##字符串乘法2 'i love youi love youi love youi love youi love youi love youi love youi love youi love youi love you'3 >>> [1]*20 ##列表乘法4 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]5 >>> (1,2)*5 ##元组乘法6 (1, 2, 1, 2, 1, 2, 1, 2, 1, 2)7 >>> [None]*20 #创建一个20个元素的空列表8 [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
6.成员资格in
判断一个值是否存在于序列中,若是返回True,若不是返回False。可用于判断输入的值是否存在于数据库中,读写执行权限的判断。
1 >>> permission='rwx'2 >>> 'r' in permission3 True
7.长度len、最大值min、最小值max
长度是用来统计一个序列中元素的个数;最大值返回序列所有元素中的最大值;最限制返回序列所有元素中的最小值。
1 >>> msg=[1,2,3,4,5,6,7]2 >>> len(msg)3 74 >>> max(msg)5 76 >>> min(msg)7 1