负索引和负方向

        在python里有序集合的index位置信息可正可负,方向可以从左向右或从右向左。以“python”字符串通过list函数转化生成的列表为例,其正负位置信息index值如下所示:

0

1

2

3

4

5

'p'

'y'

't'

'h'

'o'

'n'

-6

-5

-4

-3

-2

-1

故,切片的start、end、step也可用负数来表示。

例1:

s = "python"
print s
a = list(s)
print a
b = a[1 : -2 : 1]
print b
c = a[1 : -2 : -1]
print c

 

程序的执行结果如下:

python
['p', 'y', 't', 'h', 'o', 'n']
['y', 't', 'h']
[]

 

为何c为空呢?

原因:从起点start开始如果step为正从左向右到达end进行切片操作,如果step为负从右向左到达end进行切片操作。对b起点在左方向向右是能到达终点的,而对于c那条切片语句a[1 : -2 : -1],起点在左方向向右是无法到达终点的故结果集为空。

例2

s = "python"
print s
a = list(s)
print a
b = a[-1 : 2 : 1]
print b
c = a[-1 : 2 : -1]
print c

 

程序的执行结果如下:

python
['p', 'y', 't', 'h', 'o', 'n']
[]
['n', 'o', 'h']


 

为何b为空呢?

对于b和c所对应的取切片操作的起点start = -1、终点end = 2,但取得b的切片操作的step = 1意思是从起点从左向右到达终点,不可能,因为终点在左边故b为空的列表集。而c所对应的取切片操作的方向是step = -1即从右向左是可以最终到达终点的,故得到['n', 'o', 'h']结果。

例3

对于字符串,有序的集合,也是可以使用切片的。有的时候切片操作的start和end以及step会没有指定,这个时候是一些特殊用法,通常暗含的意思是该方向上的首尾。

s = "python"
print s[:]
print s[::1]
print s[::-1]
print "*****"
print s[1::1]
print s[1::-1]
print "*****"
print s[:5]
print s[:3:1]
print s[:3:-1]

 

程序执行结果:

python
python
nohtyp
*****
ython
yp
*****
pytho
pyt
no

 

(1) s[:]切片,[:]即全切即列表本身,即首尾都要。

(2) s[::1]切片,正向全切,正向全切结果和s[:]一样

(3) s[::-1]切片,负向全切,等价于s[len(s)-1::-1]

(4)s[1::1]切片,从index为1开始到正方向尾部所有元素。

(5)s[1::-1]切片,从index为1开始一直沿负方向(右向左)到该方向尾部。

(6)s[:5]切片,正向切到index为5 - 1 = 4为止,起点默认为该方向的起点值0。

(7)s[:3:1]切片,明确指明了正向步长为1,正向切片的终点index为3,起点默认该方向的起点值0 。

(8)s[:3:-1]切片,负方向切片的终点为3,起点默认为该方向的起点值-n 。

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

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

相关文章

LabVIEWL实现鸟巢等大型结构健康监测

LabVIEWL实现鸟巢等大型结构健康监测 管理国家地震防备和减灾的政府机构中国地震局(CEA)选择了七座新建的巨型结构作为结构健康监测(SHM)技术的测试台。这些标志性建筑包括北京2008年夏季奥运会场馆(包括北京国家体育场和北京国家游泳中心)、上海104层的…

深度学习毕设项目 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求&am…

java学习part15单例模式

107-面向对象(高级)-单例设计模式与main()的理解_哔哩哔哩_bilibili 1.单例 就是说在某些开发场景中,某个类只要有一个对象就足够使用了,不需要重复创建。 (理解:比如说是数据库对象,使用时创建一个可以处理所有的数…

线上异步任务突然不能回写100%

项目场景: 需求是一个作业,需要运行一组sql,所有sql运行完成,更新作业进度为100%,状态为完成。sql需要是在大数据平台,通过yarn调度,异步执行。 kafka监听每个sql的执行状态,所有sql…

【开源】基于JAVA的森林火灾预警系统

项目编号: S 019 ,文末获取源码。 \color{red}{项目编号:S019,文末获取源码。} 项目编号:S019,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟…

才聚免费为你招聘,用人单位看过来!

才聚团队从1998年开始从事项目管理的推广工作,20多年来培训学员超30万人次,分布全国各地、服务企业超过5000家。拥有大批 PMP (项目管理专业人员资格) NPDP(产品经理国际资格) 软考 (信息系统…

三十、elasticsearch集群

目录 一、集群的概念 1、节点 2、索引 3、分片和副本 二、集群的架构 三、集群的部署方式 1、单主节点 2、多主节点 3、安全集群 四、搭建ES集群 1、elasticsearch中集群节点有不同的职责划分 2、elasticsearch中的每个节点角色都有自己不同的职责,因此…

算法—双指针

双指针算法可以帮忙把时间复杂度降低一个维度,即原本O(n2)降为O(n);将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作(不开辟额外空间) 算法原理 数组…

抖音票务小程序开发:从零到一的全面指南

本文将深入介绍如何从零开始开发一款抖音票务小程序,为读者提供全面的指南,帮助他们实现从概念到实际应用的全过程。 第一步:理清需求与目标 在开发任何应用之前,清晰的需求和明确的目标是成功的关键。在这一阶段,你…

【前端首屏加载速度优化(0): 谷歌浏览器时间参数】

DOMContentLoaded 浏览器已经完全加载了 HTML&#xff0c;DOM树构建完成&#xff0c;但是像是 <img> 和样式表等外部资源可能并没有下载完毕。 Load DOM树构建完成后&#xff0c;继续加载 html/css 中的外部资源&#xff0c;加载完成之后&#xff0c;视为页面加载完成。…

论文绘图——局部细节放大

文章目录 前言一、绘图1.0版二、绘图2.0版三、总结 前言 我们经常在论文中会看到下面这些样式的图片&#xff1a;在图片中使用矩形框框出感兴趣的区域&#xff0c;然后在底部或者其他位置附上对应的局部放大的细节图&#xff0c;简洁好看。✨ 曾尝试使用过PPT制作&#xff0c;也…