`Python` 的切片,语法是这样的

a[[start]:[end][:[step]]]

其中索引为 end 的元素不会被包括进来。`start`、`end`、`step` 和 `step 前面的冒号`都可以省略。这么多可以省略的,那么解释器是怎么设置默认值的呢?解释器对正序和逆序切片的默认值设置是不一样的。

变量 `a` 长这样:

a="0123456789"

## 正序切片

在正序切片中,默认值的设置为start = `0`

end = `-1 后面一位`,即切片会返回包括 str 最后一个元素

step = `1`

其中 `end` 的默认值为 `-1 后面一位`是什么意思呢?这里的 `-1` 指的是 `index` 为 `-1` 的元素,即 `str` 的最后一个位置,在 `a` 中指的是 `9` 这个元素。那它后面一位是无意义的,但解释器执行的时候会切片到该元素的前一位,即 `9`。

下面是几种正序切片的常见用例

a[:-1]

>>> '012345678'注意这里切片返回的结果不会包括索引为 -1 的元素

a[:8]

>>> '01234567'

a[8:]

>>> '89'

a[:8:2]

a[0:8:2]

>>> '0246'

## 逆序切片 (step 为负数)

逆序切片的默认值就很有意思了,不注意的话非常容易混淆搞错边界索引,它的默认值是start = `-1`

end = `0 前面一位`,即切片会返回包括 `str` 第一个元素

这里的逻辑是,从 `start` 元素开始,在其索引上依次加上 `step`,找到下一个索引直到 `end`,所以写逆序切片的时候,`start` 的索引是大于 `end` 的索引的。

a

>>> '0123456789'

a[::-1]

>>> '9876543210'

a[0::-1]

>>> '0'

a[:0:-1]

a[-1:0:-1]

>>> '987654321'

a[4::-1]

>>> '43210'

## 总结

其实不难反推出来,默认的值并不是写死的,而是根据 `step` 值来从 `start` 或者 `end` 二者之一来用加上 `step` 依次推导,直到队列最前/最后一个元素的。如果不熟悉的话,逆序切片很容易在边界上出错,也不直观,不易理解,最好使用其他等效的操作来替代。

python切片逆序_Python 的逆序同时切片如何操作?相关推荐

  1. python 逆序_python中逆序

    python中的list的sort方法怎样逆序输出 很简单啊, sort 支持 reverse 参数,看下面的例子,分别按照正常顺序 (升序)排列,以及按照逆序排列. >>> l = ...

  2. math python 向上取整_Python成为专业人士笔记-各数学运算操作深度剖析

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python可以执行常见的数学运算符,包括整 ...

  3. python实现数的逆序_python怎么逆序

    python中字符串数组如何逆序排列?下面给大家介绍几种方法: 1.数组倒序: 原始元素的倒序排列 (1)切片>>> arr = [1,2,3,4,3,4] >>> ...

  4. python倒序输出数组_python如何逆序输出数组

    详细内容 今天就为大家分享一篇python实现将一个数组逆序输出的方法,具有很好的参考价值,希望对大家有所帮助. 方法一:(推荐学习:Python视频教程) 使用for循环从数组最大值开始遍历,每打印 ...

  5. python数组去重函数_Python科学计算库Numpy之 数组操作

    操作ndarray 的方法 numpy.reshape:这个函数在不改变数据的条件下修改形状 numpy.ndarray.flat:该函数返回数组上的一维迭代器,行为类似 Python 内建的迭代器 ...

  6. python有哪些码_Python有哪些神一般的蜜汁操作? 《附代码》

    有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python: 玩跳一跳?我用Python跳到4999分: 撩妹子?依然用Py ...

  7. python有哪些代码_Python有哪些神一般的蜜汁操作?(附代码),

    Python有哪些神一般的蜜汁操作?(附代码), 有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python; 玩跳一跳?我 ...

  8. python数据分析平均时间间隔_python 数据分析中常用的时间--datetime操作

    Python 中有time 模块和datetime模块,因为datetime使用的语法结构跟sql比较类型,所以,我选择了使用datetime. datetime有以下几个类.总结来看,如下图. 下面 ...

  9. python怎么查看列表_Python 小白,关于对于列表的+=操作不明白,查了半天也不知道怎么查,并且查询无果,请人指点?...

    这两题涉及两个概念:赋值过程中的浅复制 VS. 深复制 修改自身的操作 VS. 返回新值的操作 x 是个列表,用Python的话说,属于引用类型,它本身是一个指向底层数据结构的引用,赋值给 y 时,传 ...

最新文章

  1. maven实现依赖的“全局排除”
  2. 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
  3. Python用HTMLTestRunner生成html测试报告
  4. 设计公共API的六个注意事项
  5. TensorFlow 基本操作
  6. 第零课、开启ce自身保护、设置od,让调试不非法
  7. 绕安全狗mysql_技术讨论 | Fuzz绕过安全狗4.0实现SQL注入
  8. 喂,315吗?我花299元买到一只人工智障!
  9. 【Unity开发小技巧】Unity中文转拼音
  10. 计算机复试不机试的学校,计算机考研复试:计算机考研复试不考机试的高校
  11. 使用Aforge 开发的摄像头,有拍照,录像,设置帧率,分辨率等,以及对视频以及相机等的控制
  12. silvaco-mobility models(1)
  13. 锂电池UN38.3测试项目介绍
  14. 实现div半透明效果
  15. css 三栏布局 圣杯布局 双飞翼 flex
  16. A段架构设计_隽语集(Business Thinking _1201)
  17. 面试官:如何用最少的老鼠试出有毒的牛奶?
  18. 2023年美团科研合作课题公开征集启动
  19. 怎么去掉WIN7窗口文本框中淡绿色的底色
  20. java 线程的构造函数_深入理解Thread构造函数

热门文章

  1. 每天进步一点点:andriod学习从零开始
  2. 《动手学深度学习 PyTorch版》学习笔记(三):线性回归
  3. 指定tensorflow运行的GPU或CPU设备
  4. 计算机网络(七)-物理层设备
  5. 如何看打印机的缓存区域_松下打印机好吗 松下打印机卡纸如何解决【详解】...
  6. python url中传递中文_Python编程:URL网址链接中的中文编码与解码
  7. 二进制权值计算 lsb_2020年二级计算机基础知识备考(第二章)
  8. oracle 批量 重建索引,Oracle重建索引Shell脚本、SQL脚本分享
  9. python复制之坑
  10. 在状态栏中显示鼠标位置坐标