- Python的序列类型(Sequence Types)有列表(list)和元组(tuple)。
- 列表是可变的(mutable),元组是不可变的(immutable),但两者的用法有很多相同之处。在Python3中,range也是一种不可变序列类型。
- Python的序列其实是一种广义表,也就是说一个序列里可以存储各种不同的数据类型,然而现实中为了便于理解与操作,一般一个序列里只会存储一种数据类型。
- Python的字符串(str)也可看作是一种特殊的序列。
用下标访问序列中的元素,注意python中还存在负数的索引,例如-1就是倒数第一个元素。
>>> arr = [1,2,3,4,5,6]
>>> arr[-1]
6
用‘+’操作符将两个序列拼接在一起,注意拼接后的元素顺序与拼接时的顺序有关。
>>> arr = [7,8] + arr
>>> arr
[7, 8, 1, 2, 3, 4, 5, 6]
s为一个序列,n为一个整数。
用法:n * s
或s * n
,返回一个s中元素重复了n遍的列表。
>>> arr = [1,2] * 3
>>> arr
[1, 2, 1, 2, 1, 2]
x为一个元素,s为一个序列
用法:x in s
,s中存在则返回True,否则返回False。not in同理
[1, 2, 1, 2, 1, 2]
>>> 3 in arr
False
len(s)
返回序列中元素个数
max(s)
返回序列中最大元素
min(s)
返回序列中最小元素
注意max与min函数的参数实际为:
max(*iterable, *[, key, default]*)
max(*arg1, arg2, *args[, key]*)
这意味这你可以自己定义函数来决定怎么样算是最大或最小
s.index(x[, i[, j]])
元素x在s中第一次出现的索引(或在s中的i位置后,j位置前第一次出现),未找到则会出现ValueError。
s.count(x)
元素x在s中的出现次数,未找到则出现次数为0
对某一序列进行切片会返回一个由该序列中一部分元素所组成的序列。
典型的用法为s[i:j]
,展示如下:
>>> arr = [1,2,3,4,5,6]
>>> arr[1:4]
[2, 3, 4]
>>> arr[1:]
[2, 3, 4, 5, 6]
>>> arr[:4]
[1, 2, 3, 4]
>>> arr[-6:-3]
[1, 2, 3]
>>> arr[-1:]
[6]
>>> arr[:-3]
[1, 2, 3]
除此之外还有s[i:j:k]
的用法,表示步数为k
>>> arr[-6: :2]
[1, 3, 5]
注意切片不会变更元素的顺序,因此不存在arr[-1:-6]
然后返回一个反向序列的操作!
对序列进行切片的索引如下表所示:
_ | p | _ | y | _ | t | _ | h | _ | o | _ | n | _ |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | ||||||
-6 | -5 | -4 | -3 | -2 | -1 |
该条仅作备忘
1.python居然有这种操作,比C++方便多了(
>>> arr1, arr2 = [1,2], [3,4]
>>> x1, x2 = 1, 2
2.要将一个序列拷贝给另一个序列,不能直接用语句arr1 = arr2
,这样的效果如同C++中的引用。考虑到切片会返回一个序列,因此可以用语句arr1 = arr2[:]
来达到拷贝的效果
以上为序列的基本操作,下文中将介绍列表与元组中基本操作以外的内容