1.序列概论
2.通用的序列操作
- 适用于所有序列的操作有:索引、切片、相加、相乘和成员资格检查。
2.1索引
- 序列中所有元素都有编号——从0开始递增,用编号来访问各个元素称为索引。
- 可以用索引来获取元素。
- -1是最后一个元素的位置
- 代码清单2-1 索引操作实例
2.2切片
- 切片用来访问特定范围内的元素
- 提供两个索引来指定切片边界,第一个索引指定的元素包含在切片内,第二个索引指定的元素不包含在切片内。
- 若切片结束于序列末尾,可省略第二个索引。
- 若切片开始于序列开头,可省略第一个索引。
- 要复制整个序列,可将两个索引都省略。
- 代码清单2-2 切片操作示例
- 步长不可为0,否则无法向前移动,但可以为负数,即从右向左提前元素。
- 步长为负数时,第一个索引必须比第二个索引大。
2.3序列相加
2.4乘法
- 序列与数x相乘时,将重复这个序列x次来创建一个新序列
- 没有在列表中添加任何内容可使用None
- 代码清单2-3 序列(字符串)乘法运算示例
2.5成员资格
- 要检查特定的值是否包含在序列中,可使用运算符in
- in为布尔运算符。检查是否满足指定的条件,并返回相应的值:满足返回True,反之False.
- 代码清单2-4 序列成员资格示例
- 内置函数len、min、max
- len()返回序列中中包含的元素个数。
- min()和max()分别返回序列中最小的元素和最大的元素。
3.列表
3.1函数list
>>>list('Hello')
>['h','e','l','l','o']
- 可将任何序列(而不仅仅是字符串)作为list的参数
3.2基本的列表操作
- 给元素赋值:使用索引表示法给特定位置的元素赋值,如 x[1]=2
- 删除元素:从列表中删除元素使用del语句,如 del names[2]
- 给切片赋值:使用切片赋值,可将切片替换为长度与其不同的序列。如 name[1:]=list(‘ython’)
- 使用切片赋值还可在不替换原有元素的情况下插入新元素,如 numbers[1:1]=[2,3,4]
3.3列表方法
>>>lst=[1,2,3]
>>>lst.append(4)
>>>lst
[1,2,3,4]
>lst=[1,2,3]
>lst.clear()
>lst
[]
>a=[1,2,3]
>b=a
>b[1]=4
>a
[1,4,3]
>a=[1,2,3]
>b=a.copy()
>b[1]=4
>a
[1,2,3]
>x=[[1,2],1,1,[2,1,[1,2]]]
>x.count(1)
2
>x.count([1,2])
1
>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+b
[1,2,3,4,5,6]
>a
>[1,2,3]
>knights=['we','are','the','knights','who','say','ni']
>knights.index('who')
4
>numbers=[1,2,3,5,6,7]
>numbers.insert(3,'four')
>numbers
[1,2,3,'four',5,6,7]
- pop:从列表中删除一个元素(默认为最后一个元素),并返回这一元素
>x=[1,2,3]
>x.pop()
3
>x
[1,2]
>x.pop(0)
1
>x
[2]
>x=['to','be','or','not','to','be']
>x.remove('be')
>x
['to','or','not','to','be']
>x=[4,6,2,1,7,9]
>x.sort()
>x
[1,2,4,6,7,9]
>y=x.sort()
4.元组
- 元组与列表的唯一差别在于元组是不能修改的。
- 要表示只包含一个值的元组,须在它后面加上逗号,如 (42,)
- 对于元组而言逗号至关重要,只用圆括号括起不管用
>3*(40+2)
126
>3*(40+2,)
(42,42,42)
- tuple:将一个序列作为参数,并将其转换为元组。若参数已经是元组,就原封不动地返回它。
>tuple([1,2,3])
(1,2,3)
>tuple('abc')
('a','b','c')
>tuple((1,2,4))
(1,2,3)