1 序列
在Python中,最基本的数据结构是序列,序列中每个元素被分配一个编号,也称为索引。第一个索引为0,第二个则是1,以此类推。序列中最后一个元素被标为-1,倒数第二个元素被标为-2,以此类推。
2 Python内建序列
Python包含6种内建序列,分别是列表,元组,字符串,UNICODE字符串,BUFFER对象和XRANGE对象。开始重点关注列表和元组。
3 列表和元组(序列)
列表和元组一个很重要的区别是,列表可以修改,元组则不能被修改。几乎所有情况下列表都可以替代元组,但有一个列外情况,使用元组做为字典的键,在这种情况下,因为键不能被修改,所以不能使用列表。
4 序列的通用操作
所有序列类型都可以进行某些特定操作,包括索引,分片,加,乘和检查某个序列是否属于序列成员。另外还有计算序列长度,找出最大元素最小元素的内建函数。
4.1索引
序列中所有元素都是有编号的,从0开始递增,这些元素可以通过编号来访问,比如下面的例子
s = ("xxxxx", "yyyy")
print(s[0])
输出是 "xxxxx"
4.2 分片
跟索引访问序列中的元素相似,但是用来访问序列中一定范围的元素。分片通过冒号相隔的俩个索引值来实现s[Index1:Index2]。一般通过分片来提取序列中的一部分元素。Index1是需要提取部分的第一个元素的编号,Index2是分片之后剩余部分的第一个元素的编号。也就是在提取的部分中,是不包括序列中索引为Index2的元素的。简而言之,就是第一个索引元素是包含在分片内,第二个索引元素是不包含在分片内的。
4.3 序列相加
可以通过加号来实现序列的连接操作。比如俩个字符串相加连接成一个新的字符串。
4.4 序列乘法
用数字X乘以一个序列会产生一个新的序列,在新的序列中,原来的序列被重复X次。
4.5 成员资格
为了检查一个值是否存在序列中,可以使用in运算符号。这个运算符检查某个条件是否为真,然后返回相应的值。例如
s = [ ['sysnap', 123], ['huangzheng',246], ['ipi',9999]]
if ['sysnap',123] in s: print("find it")
4.6 长度,最大值,最小值
内建len函数返回序列中所包含元素的数量,min和max函数则分别返回序列中最大和最小的元素。
5 序列之列表
列表的内容是可被修改的。可以使用list函数来创建列表,list(ohter s)就可以创建列表了。列表可以使用所有适于序列的标准操作,除此之外,还有其它方法来操作列表
5.1 列表的基本操作
5.1.1 删除元素
从列表中删除元素很容易,使用del语句来实现。
5.1.2 分片赋值
使用分片赋值,可以使用与原序列不等长的序列将分片替换,这样通过分片操作也可以实现插入新的元素,删除元素(用空列表替换)
name = list("Pyxxxx")
name[2:] = list("thon")
print(name)
5.2 列表的方法
方法是一个于某些对象有紧密联系的函数,对象可以是列表,数字,也可能是字符串等其它类型。一般方法的调用方式为 对象.方法(参数)
5.2.1 append
append方法用于在列表末尾追加新的对象。
5.2.2 count
统计某个元素在列表中出现的次数
5.2.3 extend
用新列表扩展原有的列表,与连接操作的区别在于,extend方法修改了被扩展序列,而连接操作则是反回一个新的序列,比如
a = [1, 2, 3]
b = [1, 2, 4]
a.extend(b)执行之后 a 就变成[1, 2, 3, 1, 2, 4]
5.2.4 index
index方法用于从列表中找出某个值第一次匹配的索引未知
5.2.5 insert
insert用于将对象插入到列表中指定的位置,跟分片赋值一样,但可读性要高。比如
s = [1, 2, 3, 4, 5]
s.insert(3, 'new')
执行之后,s变为[1, 2, 3, 'new', 4, 5]
5.2.6 pop
pop方法用于移除列表中的元素,并返回被移除的元素,默认是移除最后一个元素,也可以移除指定索引的元素。
5.2.7 remove
remove方法用于移除列表中跟输入匹配的元素,跟pop的一个区别是输入参数是对象而不是索引,
5.2.8 reverse
reverse方法将列表中的元素反向存放,但不返回值
6 序列之元组
元组可以认为是不可变的序列,元组大多时候是通过()园括号括起来的。关于元组有一个注意的地方是,请看下面例子
3*(10+2)这是一个数学表达式,输出结果是36,
3*(10+2,)输出结果却是(12,12,12)
6.1 tuple函数
以一个序列作为参数把它转为元组
6.2 元组基本操作
除了创建元组和访问元组元素外,没有太多操做,基本用的是序列支持的标准操作。