Python 中的 sequence 类型

2023-11-08

在查看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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的 sequence 类型 的相关文章

随机推荐

  • Ubuntu下卸载Qt

    卸载有2种办法 1 进入qt的安装目录下卸载 一般ubuntu软件是安装在opt目录下 如果不在就需要找找了 进入安装目录下 sudo MaintenanceTool 选择remove all 就可以完全删除qt了 2 命令行安装的卸载 s
  • OVS datapath流表结构及匹配过程

    datapath流表的查找函数是ovs flow tbl lookup stats 在此之前 先看下datapath组织流表的方式 最新2 6的ovs流表 已经不是最早单纯的精确匹配了 而是一种精确匹配 带掩码匹配合并在一起的方式 叫做me
  • halcon像素统计_Halcon(八)亚像素轮廓XLD

    fast threshold Image Region 0 120 7 boundary Region RegionBorder inner dilation circle RegionClipped RegionDilation 2 5
  • Cox-Box变换

    在 回归分析的基本假设 中提到了回归分析中的基本假设 这里的Box Cox变换方法能够解决回归模型中的误差项不服从高斯分布的违例问题 通常这种违例情况出现在 误差 epsilon与预测变量相关的时候 会影响模型结果的精确度 简单的方法就是通
  • 了解redis的单线程模型工作原理?一篇文章就够了

    1 首先redis是单线程的 为什么redis会是单线程的呢 从redis的性能上进行考虑 单线程避免了上下文频繁切换问题 效率高 从redis的内部结构设计原理进行考虑 redis是基于Reactor模式开发了自己的网络事件处理器 这个处
  • 输入一个十进制数,输出其二进制,八进制,十六进制

    a int input 请输入一个十进制整数 print 其对应二进制为 b n八进制为 o n十六进制为 x format a a a
  • Java并发编程面试题——JUC专题

    一 AQS高频问题 1 1 AQS是什么 AQS是JUC下大量工具的基础类 很多工具都基于AQS实现的 比如lock锁 CountDownLatch Semaphore 线程池等等都用到了AQS AQS中有一个核心属性state 还有一个双
  • 基于react+and Design实现下拉框,支持自由输入

    基于react and Design实现下拉框 支持自由输入 以下是基于select的改造方案 使用AutoComplete组件更简单方便一些 AutoComplete这组件的实现方式请移步 基于react and Design实现下拉框
  • mysql 数据库授权(给某个用户授权某个数据库)

    mysql 数据库授权 给某个用户授权某个数据库 版权 1 小唐唐 https blog csdn net qq 38390092 article details 90340804 2 季枫 https www cnblogs com ji
  • PCB设计中常用的尺寸标注

    PCB设计中常用的尺寸标注 原创 凡亿教育 凡亿PCB 凡亿PCB 为了使设计者或生产者更方便地知晓PCB尺寸及相关信息 在设计的时候通常考虑到给设计好的PCB添加尺寸标注 尺寸标注方式分为线性 圆弧半径 角度等形式 下面对最常用的线性标注
  • canteen php,PHP脚本任务优化思路或改进方案?

    脚本部分 date default timezone set PRC require once canteen MySQL php mysql MySQL getInstance localhost root 123456 canteens
  • Oracle 修改字段非空属性问题

    背景 最近因为项目要做国际推广 然后在国外使用环境中有一个我们国内系统必填的字段是不需要的 导致一些问题所以需要修改数据库中对应字段的非空属性为允许为空 因为sql水平实在渣渣 只能网上搜索结果 找到一堆答案 但是没一个能成功执行的 不知是
  • ViewModelScope 避免内存泄漏的原理

    避免的是什么 避免的是协程的内存泄漏 如何避免 总体逻辑 通过 lifecycle 监听 Activity 的生命周期 在 Activity 销毁时对协程进行 cancel 监听状态变化 下图代码是注册监听的地方 可以看到在 Activit
  • 2014第五届蓝桥杯JavaB组决赛(国赛)试题汇总及试题详解

    蓝桥杯历年省赛真题汇总及题目详解 蓝桥杯历年决赛试题汇总及试题详解 目录 第一题 国王的遗产 第二题 六角幻方 第三题 格子放鸡蛋 第四题 排列序数 第五题 幂一矩阵 第六题 供水设施 第一题 国王的遗产 题目描述 X国是个小国 国王K有6
  • oracle数据库级别优化分析工具介绍

    author skatetime 2010 03 04 oracle数据库级别优化分析工具介绍 当我们对数据库优化诊断时 需要收集相应的信息以供参考 从个人的使用经验来说 这种统计数据分为两大类 一类是数据库级别的统计信息二类是os级别的统
  • 常见iPhone恢复固件(DFU模式)的三种方法

    可能你听说iPhone的DFU模式 DFU的全称是Development Firmware Upgrade 实际意思就是iPhone固件的强制升降级模式 例如 在你降级iPhone固件的时候 如果出现过错误 1 或者错误 6 那么在你恢复或
  • 如何使用ESP32相机模组实现视频流和人脸识别

    人证识别系统有许多种方式 比如使用签名 指纹 语音 面部识别等来识别人员 但是只有人脸识别系统可以检测和识别机场 零售店和火车站等公共场所中的人员 人脸识别系统不仅可以用于安全目的以识别公共场所中的人员 还可以用于办公室和学校中的考勤记录
  • ESP8266使用详解(AT,LUA,SDK)

    https www cnblogs com yangfengwu p 10100152 html 8266综合开发教程 AT LUA SDK 推荐 https www cnblogs com yangfengwu category 1187
  • android 自定义时钟控件

    效果截图 自定义时钟组件源代码 package com sky dreaming analogic clock view import android content Context import android content Inten
  • Python 中的 sequence 类型

    在查看Python 内置的帮助文档的时候 我发现其对函数的定义def是如下形式的 duplicated subset Hashable Sequence Hashable None None keep Literal first Liter