python切片原理_深度解析Python切片

详解Python 切片语法

Python的切片是特别常用的功能,主要用于对列表的元素取值。使用切片也会让你的代码显得特别Pythonic。

切片的主要声明如下,假设现在有一个list,命名为alist:

alist = [0,1,2,3,4]

切片语法的基本形式为:

alist[start:stop:step]

可以看出对于列表的切片操作有三个参数,分别为:

start:起始位置

stop:终止位置

step:步长

三个参数都是可选参数,意义为list的下标,即index。step参数默认值为1。表现形式有以下几种:

alist[start:stop]

alist[start:]

alist[:stop]

alist[:]

第一种方式指定了start与stop参数,从start指定的下标开始取alist的元素,直到stop-1,例如 a[1:3] 的结果为 [1,2] 。

第二种方式会从start指定的下标开始,取alist剩余元素。例如 a[1:] 会得到 [1,2,3,4] 。

第三种方式会从alist的开始,取list元素,直到下标为stop-1,例如 a[:4] 会得到结果 [0,1,2,3]

第四种方式没有指定start与stop参数,则会返回整个列表。

需要注意的是, :stop 表示不在选定切片中的第一个值, alist[start:stop] 的取值类似于数学中的取值范围为 [start, stop) , 所以在步长默认为1的情况下, start-stop 的结果即为所取元素的数量。

负值用法

start与stop参数为负值

start与stop的值可以是负值,表示取值是从list的最后开始,而不是开头。 例如:

alist[-1]

alist[-3:]

alist[:-1]

[2,3,4]

[0,1,2,3]

step参数为负值

step为负值时候表示将列表逆向,最简单的例子如下:

alist[::-1]

输出结果为 [4,3,2,1,0] 。这个例子实际是以下面的这个形式返回,

[alist[-1], alist[-1-step], ..., alist[0]]

即从倒数第一个元素开始,每一步加上步长,因为这里步长为负数,所以是减法,直到alist的开头。 知道这个原理,就能明白一些加上了start与stop参数的复杂写法,例如:

指定了start参数

alist[1::-1]

实际上是这样返回:

[alist[1], alist[1-step], ..., alist[0]]

因此,返回的是 [1,0]

指定了stop参数

alist[:1:-1]

实际上是这样返回:

[alist[-1], alist[-1-step], ..., alist[stop+1]]

因此,返回的是 [4, 3, 2] 。

同时指定了start与stop参数

注意,由于是逆序,所以start参数应该大于stop参数。

alist[3:1:-1]

实际上是这样返回:

[alist[start], alist[start-step], ..., alist[stop+1]]

因此,返回的是 [3,2]

我们可以看出,

如果指定了start参数,则从start参数index开始取元素,直到遇到stop下标或者list的第一个元素。

如果未指定start参数,则从list倒数第一个元素开始,直到遇到stop下标或者list的第一个元素。

总结

切片语法的使用特别灵活,如果正确掌握了它的用法,能够简化你的代码。需要注意的是,Python也提供了slice类用于制造切片,例如:

alist[start:stop:step]

实际上等价于

alist[(slice(start,stop,step))]

以上所述是小编给大家介绍的Python 切片语法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么数学不好,和语文有关系?

▲ 点击查看苏步青教授在担任复旦大学校长时曾经说过:“如果允许复旦大学单独招生考试,我的意见是第一堂课就考语文,考后就批卷子。不合格的,以下的功课就不要考了。语文你都不行,别的是学不通的。”苏步青作为享誉世界的数学家&a…

Docker 博客

Docker 常用命令:首先推荐:http://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html Docker 网络桥接:http://blog.tankywoo.com/2014/12/22/docker-bridge-network.html docker 大牛的博客:http://blog.csdn.net/smal…

python string length_如何使用python获取字符串长度?哪些方法?

掌握多种python技巧,对于我们更好的灵活应用python是非常重要的,比如接下来给大家介绍的获取字节长度,那大家脑海里就该有印象了,有几种方法呢?一起来看下吧~1、使用len()函数这是最直接的方法。 在这里,我…

二进制、八进制、十进制、十六进制之间转换

一、 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上…

【招聘(北京成都)】北森 招聘.NET 架构师工程师

.net后端架构师 25k-38k14薪工作职责:1.根据业务框架要求,提供技术实现方案;2.负责技术架构选型、并主导功能模块设计、数据结构设计、对外接口设计;3.负责核心技术攻关、系统调优,使系统架构、代码结构不断演进优化;4…

android 网络开发

反复研究了 Android Market,总结一下,之前发在新浪微博上,但不够详细,主要是提高用户体验。 1.网络异常处理,重试机制。 上wifi常常网络断开,那就看运用程序是否健壮。可以用Android 提供的 frameworks/bas…

python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法

大家知道,PyCharm是一款著名的Python IDE开发工具,是拥有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,具备基本的调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。该IDE分为社区免费版(…

python中线程和进程_python中线程和进程的简单了解

一、操作系统、应用程序1.硬件:硬盘、cpu、主板、显卡........2.装系统(本身也是一个软件):系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合。3.安装软件:各种应用程序二、并发和…

一份干货满满的PPT,答辩加分手到擒来!

全世界只有3.14 % 的人关注了爆炸吧知识对很多童鞋来说,PPT可以说是使用频率很高的办公软件了。毕业答辩需要PPT,项目总结需要PPT,演讲也都需要PPT……可你是否因为PPT陷入这样的——脑壳疼状态!花费大量时间,结果PPT效…

《Java程序员全攻略:从小工到专家》连载八:加入什么样的公司

加入什么样的公司 “怎么样,蔡佳娃?听了这么多介绍,心里有点谱了吧?” “嗯,听师兄你这么一说,我想了想,还是优先要追求一下欧美的IT公司。追不到也没关系,至少知道自己不行了&#…

理解浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。

需要浮动的元素可使用CSS中float属性来定义元素的浮动位置,left:往左浮动,right:往右浮动浮动元素引起的问题:(1)父元素的高度无法被撑开,影响与父元素同级的元素(2&…

Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行。当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用就可以了。但是我发现,启用了k8s后,Docker for desktop会消耗大量的系统资源…

WebService事务处理

如果在WEB服务中有这样一个场景,某个WEB服务的方法要执行两个任务,它首先要在数据库中创建一个新表,接着调用对象来收集和格式化数据,并在新表中插入数据。象这样的一组方法,我们必须保证他们都成功执行,否…

我的新书,《人人都是产品经理》自序

是谁?每次K歌 都对着点歌面板评头论足。 是谁?逛超市时总在想“这个商品能解决什么需 求?”。 是谁?会给自己的个人发展做战略规划。 是谁?一定要在自己的婚礼中讲一个PPT。 是谁?会拿用户调研的方法与亲朋…

记一次 .NET 某新能源汽车锂电池检测程序 UI挂死分析

一:背景 1. 讲故事这世间事说来也奇怪,近两个月有三位朋友找到我,让我帮忙分析下他的程序hangon现象,这三个dump分别涉及:医疗,新能源,POS系统。截图如下:那这篇为什么要拿其中的 新…

C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令

如果下载多个文件的时候,有时候莫名其妙的出现500服务器错误,很有可能是没有设置KeepAlive 属性导致的。 出现应用程序未处理的异常:2015/1/6 11:40:56 异常类型:WebException 异常消息:远程服务器返回错误: (500) 语法…

树莓派能直接运行python程序_树莓派怎么运行python程序

树莓派运行Python程序的方法:一、RaspBerry系统设置1、首先在开发板没有通电情况下,连接硬件,以及项目中用到传感器。比如当前项目需要将LED灯插在面包板上,然后通过杜邦线将开发板和面包板连接,硬件平台搭建完毕。2、…

这个女生躲在衣柜等男友回家,结果竟是......

1 不要什么都怪爸爸我妈明明也是这样帮我脱的▼2 这就是现实版大女主反杀女二的故事啊▼3 我猜到了开头却没有猜到结尾▼4 ???一定是我被饿出了幻觉▼5 小小的孩子在极短的时间内经历了人生的大戏和大悲▼6 这个令人羡慕的发量啊&#…

mysql savepoint作用_savepoint原理

保存点在MySQL中, 保存点SAVEPOINT属于事务控制处理部分。利用SAVEPOINT可以回滚指定部分事务,从而使事务处理更加灵活和精细。SAVEPOINT相关的SQL语句如下SAVEPOINT identifier设置SAVEPOINT。如果重复设置同名savepoint,新的会覆盖老的.RELEASE SAVEPOINT identif…

路由器笔记 CCNA

配置路由器应用性<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1配置端口1&#xff09; 配置局域网端口&#xff1a;进入&#xff08;config-if&#xff09;#模式 配置ip地址和掩码 &#xff08;config-if&#xff09;#ip a…