首页 > 编程语言 >如何实现Python中的切片操作

如何实现Python中的切片操作

时间:2023-10-15 23:33:21浏览次数:40  
标签:slice Python 元素 stop 切片 start step 操作

内容来自 DOC https://q.houxu6.top/?s=如何实现Python中的切片操作

Python中的切片符号是如何工作的?也就是说,当我编写代码像a[x:y:z]a[:]a[::2]等时,我如何理解哪些元素最终会进入切片?请在适当的地方包括参考资料。


有关切片符号设计决策的更多讨论,请参见 为什么切片和范围上界是独占的?

关于切片最常见的实际用法(以及解决该问题的其他方法),即获取列表中每个第N个元素,请参见 Pythonic way to return list of every nth item in a larger list。请在适当的地方将该问题作为重复目标。

有关切片赋值的更具体答案,请参见 How does assignment work with list slices?(尽管这也在这里回答了)。


语法是:

a[start:stop]  # 从 start 到 stop-1 的元素
a[start:]      # 从 start 到数组的其余部分的元素
a[:stop]       # 从开头到 stop-1 的元素
a[:]           # 整个数组的副本

还有 step 值,可以与上述任何一种一起使用:

a[start:stop:step] # 从 start 开始到 not past stop,按 step 进行

要记住的关键点是,:stop 值表示 未被选中 的第一个值。因此,stopstart 之间的差异是所选元素的数量(如果 step 为 1,则为默认值)。

另一个特性是 startstop 可能是一个负数,这意味着它从数组的末尾开始计数而不是从开头开始。因此:

a[-1]    # 数组中的最后一个元素
a[-2:]   # 数组中的最后两个元素
a[:-2]   # 除最后两个元素之外的所有元素

同样,step 也可能是负数:

a[::-1]    # 数组中的所有元素,反向排序
a[1::-1]   # 前两个元素,反向排序
a[:-3:-1]  # 最后两个元素,反向排序
a[-3::-1]  # 除最后两个元素之外的所有元素,反向排序

如果所请求的项目少于项目数量,Python 对程序员很友好。例如,如果您请求 a[:-2] 并且 a 只包含一个元素,您将获得一个空列表而不是错误。有时您会更喜欢错误,因此您必须意识到这种情况可能会发生。

slice 对象的关系

一个 slice 对象可以表示切片操作,即:

a[start:stop:step]

等同于:

a[slice(start, stop, step)]

slice 对象的行为也取决于参数的数量,类似于 range(),即支持 slice(stop)slice(start, stop[, step])
要跳过指定给定参数,可以使用 None,因此例如 a[start:] 等效于 a[slice(start, None)]a[::-1] 等效于 a[slice(None, None, -1)]

虽然基于 : 的符号法对于简单的切片非常有用,但显式使用 slice() 对象简化了程序生成切片。

标签:slice,Python,元素,stop,切片,start,step,操作
From: https://www.cnblogs.com/xiaomandujia/p/17766459.html

相关文章

  • pythonDay2
    变量1.引用计数增加 2;引用计数减少代码规范快捷键:ctrl+alt+l3.变量名的命名规则  is(id)和 ==(值) 4.常量5.基本数据类型   其他 6.列表  取最后一个子列表:print(l[-1])  7.字典类型: 8.布尔Bool类型(if判断中会用到) ......
  • python字典把函数作为字典的值
    defadd(x,y):returnx+ysum=add(3,5)#print(sum)dict={"add":add}sum1=dict.get("add")(4,6)通过传参把列表list传进去,在调用的方法中添加元素,原来的列表list也就成功添加了元素defaddItem(list):print(type(list))list.append("aaas")......
  • Python 模块EasyGui详细介绍
    0. 安装 EasyGuipipinstall easygui 官网:http://easygui.sourceforge.net1.一个简单的例子在EasyGui中,所有的GUI互动均是通过简单的函数调用,下边一个简单的例子告诉你EasyGui确实很Easy!importeasyguiasgimportsyswhile1:g.msgbox("嗨,欢迎进入第一......
  • WINCC V7.5 SP2 webnavigator server无法安装的解决-操作系统版本很重要
    这一篇学习笔记我在新浪博客记录过,地址是 WINCCV7.5SP2webnavigatorserver无法安装的解决-操作系统版本很重要_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里再次记录一遍。昨天在办公室计算机上的虚拟机安装windows101903专业版,然后安装WINCC7.5SP2,想安装webnavigator......
  • 车辆车型识别系统python+TensorFlow+Django网页界面+算法模型
    一、介绍车辆车型识别系统。本系统使用Python作为主要开发编程语言,通过TensorFlow搭建算法模型网络对收集到的多种车辆车型图片数据集进行训练,最后得到一个识别精度较高的模型文件。并基于该模型搭建Django框架的WEB网页端可视化操作界面。实现用户上传一张车辆车型图片识别其名称......
  • stata PYTHON 文书筛选
    cap:mkdir1012acdD:\te\pan\2018年裁判文书数据_马克数据网fs*.csvlocalshu=4foreachfilein`r(files)'{localshu=`shu'+1importdelimited"`file'",clearcap:keep案件名称所属地区案件类型案件类型编码审理程序裁判日期案由全文if_r......
  • 车辆车型识别系统python+TensorFlow+Django网页界面+算法模型
    一、介绍车辆车型识别系统。本系统使用Python作为主要开发编程语言,通过TensorFlow搭建算法模型网络对收集到的多种车辆车型图片数据集进行训练,最后得到一个识别精度较高的模型文件。并基于该模型搭建Django框架的WEB网页端可视化操作界面。实现用户上传一张车辆车型图片识别其名......
  • Filebeat 采集 k8s Pod 和 Events 日志实战操作
    目录一、概述1)采集Pod日志流程介绍3)采集Events日志流程介绍二、K8s集群部署三、ElasticSearch和kibana环境部署四、Filebeat采集配置1)采集Pod日志配置2)采集Events日志配置1、创建filebeat授权token2、filebeat配置一、概述要使用Filebeat采集Kubernetes中......
  • JS操作增加Class属性和移除删除Class属性
    直接上代码functiongo(a){if(a=='shifu'){//移除属性varshop=document.getElementsByClassName("shop")[0];shop.classList.remove("ns-border-color");//增加属性......
  • 同花顺期货通使用python写指标demo1
    期货通支持python本来是个好事情。奈何同花顺公司做产品不讲究,未经测试就发布了,全是bug。API接口也不完善,取数据的接口不支持取【持仓量】!玩期货不提供持仓量接口,那就只能是个玩具,不具有实用价值。怎么说呢?还是希望同花顺期货通能把python功能搞完善。 ......