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