一、序列概览
在Python中,最基本的数据结构是序列:
序列中每个元素被分配一个序号——即元素的位置,也称为索引,索引以0开始。
Python中有六种内建的序列:
- 列表
- 元组
- 字符串
- Unicode字符串
- buffer对象
- xrange对象
本次的讨论的列表和元组,主要区别在与——列表可以修改,元组不可修改
二、通用序列操作
所有的序列都可以进行某些特定的操作,这些操作包括:
- 索引
- 分片
- 加
- 乘
- 检查成员
除此之外,Python还有 迭代 、 计算序列长度 、找出最大元素 和 最小元素 等内建函数
**索引:通过元素的序号获取元素
>>>greeting = ‘Hello‘ >>>greeting[0] ‘H‘ >>>greeting[-1] ‘o‘ >>>"Hello"[1] ‘e‘
应用索引时注意以下几点:
首位元素的序号为0
默认从左到右计数
使用负数时,从最后一个元素开始计数,序号为-1
字符串字面值能够直接索引,可以不需要变量引用
**分片:通过元素的序号的范围访问一定范围内元素
>>>numbers = [1,2,3,4,5,6,7,8,9,10] >>>numbers[3:6] [4,5,6] >>>numbers[0:1] [1] >>>numbers[7:10] [8,9,10] >>>numbers[-3:-1] [8,9] >>>numbers[-3:0] [] >>>numbers[-3:] [8,9,10] >>>numbers[:3] [1,2,3] >>>numbers[:] [1,2,3,4,5,6,7,8,9,10]
应用分片时注意以下几点:
通过冒号隔开两个索引实现
范围以第一个索引的元素开始,以 第二个索引的元素前一位元素 结束
第一个索引的位置必须在第二个索引的位置之前
另外,在正常的分片的同时,还有步长的概念,即可以设置间隔的元素个数,默认设置为1
>>>numbers=[1,2,3,4,5,6,7,8,9,10] >>>numbers=[0:10:1] [1,2,3,4,5,6,7,8,9,10] >>>numbers[0:10:2] [1,3,5,7,9] >>>numbers[::4] [1,5,9]
设置步长时,注意以下几点:
步长不能设置为0
步长可以为负数,此时分片从右往左取元素
**序列相加:通过 加运算符 “+” 进行序列连接操作
>>>[1,2,3] + [4,5,6] [1,2,3,4,5,6] >>>"Hello, " + "world." "Hello, world." >>>[1,2,3]+‘world‘(此时系统会提示错误,列表与字符串不能连接在一起)
**乘法:原来的序列重复
>>>‘python‘ * 5 ‘pythonpythonpythonpythonpython‘ >>>[42]*10 [42,42,42,42,42,42,42,42,42,42]
**None、空列表和初始化
空列表可以简单的表示为:[],但是如果想创建一个占十个元素空间,却不包括任何有用元素的空列表,则需要使用None,None代表什么都没有
>>>[]*10 [] >>>[None]*10 [None,None,None,None,None,None,None,None,None,None]
**成员资格:检查一个值是否在序列中,使用in运算
>>> ‘w‘ in ‘rw‘ True
**长度、最小值和最大值
len:返回序列中元素的数量
min:返回序列中的最小元素
max:返回序列中的最大元素
三、列表
list函数:将字符串转换为列表
>>>list("hello") [‘h‘,‘e‘,‘l‘,‘l‘,‘o‘]
基本操作:
元素赋值
>>>x= [1,1,1] >>>x[1]=2 >>>x [1,2,1]
删除元素
>>>names = [‘Alice‘,‘Beth‘,‘Cecil‘,‘Dee-Dee‘,‘Earl‘] >>>del names[2] >>>names [‘Alice‘,‘Beth‘,‘Dee-Dee‘,‘Earl‘]
分片赋值
>>>name = list(‘Perl‘) >>>name [‘P‘,‘e‘,‘r‘,‘l‘] >>>name[2:] = list(ar) >>>name [‘P‘,‘e‘,‘a‘,‘r‘]
使用列表分片赋值注意以下几点:
可以使用与原序列不等长的序列将分片替换
>>>name = list(‘Perl‘) >>>name[1:] = list(‘ython‘) >>>name ‘Python‘
分片赋值可以在不需要替换任何元素的情况下,插入新的元素
>>>numbers = [1,5] >>>numbers[1:1] = [2,3,4] >>>numbers [1,2,3,4,5] >>>numbers[1:4] = [] >>>numbers [1,5]
列表的方法:
append 在列表末尾追加新的对象
count 统计某个元素在列表中出现的次数
extend 在列表的末尾一次性追加另一个序列的多个值
index 从列表中找出某个值第一个匹配项的位置
insert 将对象插入到列表中
pop 移除列表中的一个元素(默认是最后一个),并返回该值
remove 移除列表中某个值的第一个匹配项
reverse 将列表中的元素反向存放
sort 队列表进行排序
高级排序
元组的方法:
tuple 以一个序列为参数将其转换为元组: