python最基本的数据结构为序列(sequence)。python内置了多种序列,其中以 序列、元组、字符串最为常见
有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查
1.1 索引( indexing )
序列中的所有元素都有编号——从0开始递增
>>> a = 'hello'
>>> a[0]
'h'>>> a[-1]
'o'
0 指向第一个元素。当索引使用负数,表示从末尾往前数,[ -1 ]即表示最后一个元素。
1.2 切片(slicing)
>>> b = 'hello python'
>>> b[1:4]
'ell'
其中第一个索引指定的元素包含在内,第一个元素指定的索引不包含在内。
>>> number[-3:-1]
[8, 9]
要从列表末尾开始数,可使用负数索引。
如果要取从指定位置索引到末尾之间的元素。可使用以下方式:
>>> number[-3:] (第二个索引可省略)
[8, 9, 10]
如要从头开始则可使用:
>>> number[:3] (第一个索引可省略)
[1, 2, 3]
要复制整个序列,可将两个索引都省略
>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> number[0:10:2]
[1, 3, 5, 7, 9]
第三个参数2表示步长,不填时默认为1。不能为0,但可以为负数,表示从右向左提取:
>>> number[8:3:-1]
[9, 8, 7, 6, 5]
步长为负数时,第一个索引必须比第二个大
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
序列相加
>>> 'python'*5
'pythonpythonpythonpythonpython'
将序列与数x相乘时,将重复这个序列x次来创建一个新的序列
成员资格
要检查特定的指是否包含在序列中,可使用运算符in。条件满足时,返回True,否则为Flase
>>> p = 'python'
>>> 'pt' in p
False
>>> 'py' in p
True
list 函数
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
>>>
使用list创建的字符串列表可以使字符串像列表一样操作。
可以将任何序列作为list的参数,不仅仅是字符串。
1、修改列表:给元素赋值
>>> a = [2,2,2]
>>> a[1] = 1
>>> a
[2, 1, 2]
2、删除元素
>>> del a[2]
>>> a
[2, 1]
3、给切片赋值
>>> name = list('java')
>>> name
['j', 'a', 'v', 'a']
>>> name[2:] = list('python')
>>> name
['j', 'a', 'p', 'y', 't', 'h', 'o', 'n']
还可以插入新元素
>>> number = [1,5]
>>> number[1:1] = [2,3,4]
>>> number
[1, 2, 3, 4, 5]
同理可用于做删除
>>> number = [1,2,3,4,5]
>>> number[1:4] = []
>>> number
[1, 5]
列表方法
1、append
末尾添加
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
2、clear
清空列表, 同切片赋值语句 lst[:] = []
>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]
3、copy
复制列表
>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]
这种复制只是将a、b指向同一个列表,无论其中哪一个做出修改,另一个也随之改变。
>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b[1] = 4
>>> a
[1, 2, 3]
这种操作同样是复制,不同的是,a、b指向两个列表。因此他们各自的操作互不影响。类似于 a[:] 和 list(a)
4、extend
扩展方法,能够同时将多个值附加到表的末尾。返回的是一个全新的序列
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a = a + b
>>> a
[1, 2, 3, 4, 5, 6]这种效率比extend低
6、index
查找列表中指定值第一次出现的索引
>>> lst = ['a', 'b', 'c', 'a', 'c']
>>> lst.index('c')
2
7、insert
将一个对象插入列表
>>> numbers = [1, 2, 3, 5, 6]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 5, 6]
8、pop
从列表尾部删除一个元素,并返回这一元素。
>>> a = [1, 2, 3]
>>> a.pop()
3
9、remove
用于删除第一个为指定值的元素
>>> x = ['a', 'b', 'c', 'd', 'a']
>>> x.remove('a')
>>> x
['b', 'c', 'd', 'a']
10、reverse
反向排列列表中的元素
>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]
11、sort
对列表进行排序
>>> x = [4, 6, 2, 20, 8, 3, 9]
>>> x.sort()
>>> x
[2, 3, 4, 6, 8, 9, 20]
高级排序
元组与列表唯一的差别在于元组不能修改
元组只有一个元素时,必须咋后面加上逗号: (1, )
函数tuple的工作原理与list相似。 将一个序列作为参数,并将其转换为元组
>>> tuple([1,2,3])
(1, 2, 3)
元组的切片也是元组
元组也并非完全不能修改,如果元组中含有列表,则元组中的列表是可以修改的。
>>> a = (1, 2, 3, [4, 5, 6])
>>> a[3].append(7)
>>> a
(1, 2, 3, [4, 5, 6, 7])
内容参考: python基础教程(第3版)