Python 中的 sequence 类型

在查看Python 内置的帮助文档的时候, 我发现其对函数的定义def是如下形式的.

duplicated(
subset: 'Hashable | Sequence[Hashable] | None' = None, 
keep: "Literal['first'] | Literal['last'] | Literal[False]" = 'first'
) -> 'Series' method of pandas.core.frame.DataFrame instance

可见函数对其中的输入变量进行了类型解释, 如subset被解释使用Hashable或Sequence[Hashable]或None类型. 我很好奇Hashable和Sequence[Hashable]代表了什么. 本文以sequence 类型为例首先进行解释.

其实, Python 中的 sequence 类型是几种数据类型的总称。这些类型的共同点是集合中的元素是有序排列的。本文详细介绍 sequence 中各种类型的共同点。

概述

sequence 类型有 list 、 tuple 和 str 三类。

  • list 类型是最常见的 sequence 类型,对应了其他语言(比如javascript)中的 array 类型。
  • tuple 是 list 类型的immutable版本
  • str 类型也是immutable

list 类型介绍

list 的底层保存的是指向内容的引用。

tuple 类型介绍

tuple 对象一经生成,其中的元素便不可更改。

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值