Python 序列类型
Python 序列类型
小嗷犬什么是序列类型
在程序设计中,经常会遇到要处理很多相同类型的数据的情况,比如统计全班同学的分数、统计每篇博客的浏览量、统计每种商品的单价等等。
这时如果用一个变量存储一个数据,难免有些不便。Python 中的序列类型就能很好地解决这些问题。
序列类型是组合数据类型的一类,能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序更容易。
序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。
Python中的主要序列类型:
- 字符串(
str
):由按照一定顺序组合在一起的字符来构成的,如:
1 |
|
- 列表(
list
):包含0个或多个不同类型元素的可变序列类型,用方括号将元素包含在一起,如:
1 |
|
- 元组(
tuple
):包含0个或多个不同类型元素的不可变序列类型,用圆括号将元素包含在一起,如:
1 |
|
通用序列类型操作
所有序列类型都可以进行一些特定的操作,包括索引、切片、连接、重复、成员资格检查、计算元素出现次数等。
索引
序列类型是一个元素向量,元素之间存在先后关系,所有元素都有序号(有时也称为偏移量或索引),序列中的元素可以通过序号进行访问,通过序号获取序列中特定位置的元素,就是索引:
1 |
|
除了可以从左往右地从0
开始索引,也可以从右往左由-1
开始索引,也可以混合使用:
1 |
|
同时要注意,索引不能越界。
切片
在使用序列类型数据的过程中,常常会遇到需要获取其中一部分数据的情况。这时,可以使用分片,它是索引的一种扩展方式,返回的是序列类型数据中的一个片段,而不是一个单独的元素。
切片的语法格式为:
1 |
|
对于切片,有以下一些需要注意的地方,以字符串'Python'
为例:
- 包含左边界,不包含右边界。
- s[:] 获得包含所有字符的新字符串,缺省的左边界为 0,右边界为序列长度。
- s[0:2] 获得新字符串“Py”,即序号为 0 直到序号为 2 之前的所有字符。
- s[2:] 获得新字符串“thon”,即从序号 2 到最后的所有字符。
- s[:3] 获得新字符串“Pyt”,即从开头直到不包括序号为 3 之间的所有字符。
- s[:-1] 获得新字符串“Python”,即从开头直到不包括最后一个字符之间 的所有字符。
步长
在切片时,除了可以指定左边界和右边界的序号外(或者不指定而使用缺省值),还可以增加第三个值,即步长。
步长用于规定切片的间隔:
1 |
|
步长也可以是负数,即以相反的顺序来获取元素:
1 |
|
连接和复制
+
操作符可以连接两个类型相同的序列,得到一个新的该类型序列,就像它将两个字符串合并成一个新字符串一样:
1 |
|
*
操作符也可以用于其他的序列类型,序列类型的值和一个整数n
相乘,得到将该序列类型值重复n
次的新的对象:
1 |
|
in 和 not in
通过运算符in
可以判断某个元素是否在序列中,如果元素在序列中,in
表达式返回True
,否则返回False
。运算符not in
则正好相反:
1 |
|
count()
当需要计算某个元素在序列中出现的次数时,使用序列的count()
方法可以很轻松的完成这个任务:
1 |
|
序列类型通用操作符和函数
序列类型有12个通用的操作符和函数:
操作符 | 描述 |
---|---|
x in s | 如果x是s的元素,返回True,否则返回False |
x not in s | 如果x不是s的元素,返回True,否则返回False |
s + t | 连接s和t |
s *n 或 n* s | 将序列s复制n次 |
s[i] | 索引,返回序列的第i个元素 |
s[i: j] | 切片,返回包含序列s第i到j个元素的子序列(不包含第j个元素) |
s[i: j: k] | 步骤切片,返回包含序列s第i到j个元素以j为步数的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x[, i[, j]]) | 序列s中从i开始到j位置中第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |