美文网首页
Python序列负数索引切片的思考

Python序列负数索引切片的思考

作者: 马小李23 | 来源:发表于2018-08-21 21:47 被阅读366次

Python中的序列是可以采用负数的索引来访问的,其范围是 -1 到序列的负长度,也就是
-len(sequence) <= index <= -1,负索引以序列的结束为起点。除了提供按照索引,访问序列中的单个元素,Python也提供了切片的方式访问序列中的子序列的方式,这就是切片的访问方式,其一般语法如下:
sequence[starting_index:ending_index]
如此,我们会得到从starting_index对应元素开始,到ending_index对应元素结束,但是不包括ending_index对应元素,所组成的子序列的内容。起止索引都是可选的选项,如果没有提供或者为None,那么开始索引默认为0,结束索引默认为序列最末尾的索引。切片的访问模式,有第三个值,类似于步长,其访问类似下面代码

>>> ('a','b','c','d')[0:3:2]
('a', 'c')

在《Python核心编程(第二版)》一书中指出,切片的访问,开始和终止的索引,都可以超过序列的长度,然后给出了如下的代码示例:

>>> ('Faye', 'Leanna', 'Daylen')[-100:100]
('Faye', 'Leanna', 'Daylen')

这样有点难以理解,就是开始的序列是负数,然而访问的得到的序列还是正序的。其实对于这样的访问,首先要排除书中刚刚提到的步长的干扰,重新看切片两个参数情况下的访问说明是:得到从starting_index对应元素开始,到ending_index对应元素结束,但是不包括ending_index对应元素,所组成的子序列的内容。
那么再回到上述例子中来,-100是不存在的,那么从-100开始自增,最早存在的能访问其对应元素的索引是-3,也就是’Faye’,那么开始的索引就是这个。而从100递减,最早存在的能访问其对应元素的索引是3,就是’Daylen’,于是切片访问两者之间的组成的子序列,就是上述程序的输出。
如果还是不能明白,可以看几个简单的例子:

>>> ('a','b','c','d')[-4]
'a'
>>> ('a','b','c','d')[-4:4]
('a', 'b', 'c', 'd')
>>> ('a','b','c','d')[-4:0]
()
>>> ('a','b','c','d')[-4:1]
('a',)
>>> ('a','b','c','d')[-4:2]
('a', 'b')

相关文章

  • Python序列负数索引切片的思考

    Python中的序列是可以采用负数的索引来访问的,其范围是 -1 到序列的负长度,也就是-len(sequence...

  • Python编程笔记(1)序列及Python代码实现

    有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查。 索引 索引:使用负数索引时,Python将从...

  • 1. 关于列表理解&使用的几个错误

    什么是python中的序列?序列表示有序的排列,每个元素都有相应的位置,可进行索引访问得到。序列具有索引、切片、加...

  • python基础篇(二)

    切片 指定索引值,不指定索引的开始或结束,Python将从列表开头开始提取或至末尾才结束,负数索引返回离列表末尾相...

  • Python 通用的序列操作

    Python通用的序列操作有:索引、切片、乘法、成员资格检查、长度、最小值和最大值。 序列 (sequence)概...

  • python高级特性应用

    切片 在索引查询中使用 : 查询就是切片的标志性用法 查询索引可以是负数,负数代表倒着查询 两个 : 时,最后面的...

  • Python--序列

    通用序列操作:索引、切片、加、乘、成员资格检查、序列长度、最大最小元素 1、索引 2、切片 2.1、步长 开始点的...

  • python学习干货教程(10):列表

    列表是Python中6个内置序列类型之一,序列都可以进行的操作包括索引,切片,加,乘,检查成员,确定序列的长度以及...

  • Pandas(索引、选取和过滤)

    利用标签的切片运算与普通的Python切片运算不同,其末端是包含的。 用一个值或序列对DataFrame进行索引其...

  • 4个Python提效用法

    索引和切片 Python中获取列表中的任意元素。除了支持常见的正索引外, Python还支持负索引和切片。 正索引...

网友评论

      本文标题:Python序列负数索引切片的思考

      本文链接:https://www.haomeiwen.com/subject/nzjsiftx.html