Python 中的 sequence 类型是几种数据类型的总称。这些类型的共同点是集合中的元素是有序排列的。本文详细介绍 sequence 中各种类型的共同点。
概述
sequence 类型有 list 、 tuple 和 str 三类。
- list 类型是最常见的 sequence 类型,对应了其他语言(比如javascript)中的 array 类型。
- tuple 是 list 类型的 immutable版本
- str 类型也是 immutable
list 类型介绍
list 的底层保存的是指向内容的引用。
变量保存的底层形式见这篇文章:Python 中的变量赋值
tuple 类型介绍
tuple 对象一经生成,其中的元素便不可更改。在Python 里 immutable和hashable的概念中有介绍。
str 类型介绍
字符串使用单引号或者双引号括起来的字符序列。也是immutable 的。如果三个连续的单引号或者双引号,则表示一个长字符串,其中的换行符(\n)无需转义。比如:
print("""This is a
long string""")
sequence 类型的共同用法
下列的用法可以用于 sequence 的任一类型:
寻址
[i]
方括号用来表示寻址。 S[i]
返回 S
中第 i
个元素。
若 i
是负数,则表示从尾部开始,或者可以理解为坐标值 i
加上序列长度的结果,意思是:
S[ i ] = S[ len(S)+i ] ,当 -len(S)<=i<0
比如:
>>> range(10)[-2]
8
>>> range(10)[10-2]
8
>>> range(10)[-3]
7
>>> range(10)[10-3]
7
>>> range(10)[-10]
0
>>> range(10)[10-10]
0
切片
[m:n:i]
寻址的高级用法是切片 Slicing 。 S[m:n:i]
返回 S
中第 m
个元素开始,每隔 i
个元素,直到 n-1
为止的子集。比如:
>>> range(10)[1:8:2]
[1, 3, 5, 7]
>>>
若不提供 i
,则 i
默认为1
>>> range(10)[1:8]
[1, 2, 3, 4, 5, 6, 7]
>>>
若m或者n是负数,则按照 寻址 表示:
>>> range(10)[-8:-1]
[2, 3, 4, 5, 6, 7, 8]
若不提供m或者n中的一个,则表示从到尾部结束或者从头部开始:
>>> range(10)[4:]
[4, 5, 6, 7, 8, 9]
>>> range(10)[:4]
[0, 1, 2, 3]
>>>
若m和n均不提供,则表示一个原始 sequence 的复制品:
>>> range(10)[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
级联
+
sequence 的加法 “+” 被重载为级联动作:
>>> (1,2,3)+(4,5,6)
(1, 2, 3, 4, 5, 6)
>>>
重复
*
sequence 的乘法 “*” 被重载为复制动作:
>>> "abc "*3
'abc abc abc '
>>>
判断成员身份
in
sequence 类型都支持 in
操作,以判断某个元素是否在集合内部。
>>> "c a" in ("abc "*3)
True
>>>
sequence 类型支持的函数
元素个数
len()
len(S)
函数返回序列 S 的元素个数
元素的极值
min( ), max( )
min(S)
函数返回序列 S 的中最小元素, max(S)
函数返回序列 S 的中最大元素。
>>> min("ABC")
'A'
>>> max("aBC")
'a'
>>>
寻找元素
index( )
S.index(a)
法函数返回对象 S 的元素 a 第一次出现的位置,例如:
>>> "aaaa".index('a')
0
>>>
统计元素出现次数
count( )
S.count(a)
方法函数返回对象 S 的元素 a 出现的次数,例如:
>>> [[1],[1],[1]].count([1])
3
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/python-sequence/ ,且不得用于商业用途。