社区首页 / Python / 帖子详情

Python 的 Sequence 切片

发表于:2017-06-19 12:53 [ 只看楼主] 3891 0 0

前言


在python中, 切片是一个经常会使用到的语法, 不管是元组, 列表还是字符串, 一般语法就是:


sequence[ilow:ihigh:step] # ihigh,step 可为空; 为了简短易懂, 暂时排除step的用法考虑


先来简单示范下用法


sequence = [1,2,3,4,5]

sequence [ilow:ihigh]  # 从ilow开始到ihigh-1结束

sequence [ilow:]       # 从ilow开始直到末尾

sequence [:ihigh]      # 从头部开始直到ihigh结束

sequence [:]           # 复制整个列表


语法很简洁, 也很容易理解, 这种语法在我们日常使用中 是简单又好用, 但我相信在我们使用这种切片语法时, 都会习惯性谨遵一些规则:


  1. ilow, ihigh均小于 sequece的长度

  2. ilow < ihigh


因为在大部分情况下, 只有遵循上面的规则, 才能得到我们预期的结果! 可是如果我不遵循呢? 切片会怎样?


不管我们在使用元组, 列表还是字符串, 当我们想取中一个元素时, 我们会用到如下语法:


sequence = [1,2,3,4,5]

print sequence[1]   # 输出2

print sequence[2]   # 输出3


上面出现的 1,2 我们姑且称之为下标, 不管是元组, 列表还是字符串, 我们都能通过下标来取出对应的值, 但是如果下标超过对象的长度, 那么将触发索引异常(IndexError)


sequence = [1,2,3,4,5]

print sequence[15]  

 

### 输出 ###

Traceback (most recent call last):

  File "test.py", line 2, in <module>

    print a[20]

IndexErrorlist index out of range


那么对于切片呢? 两种语法很相似, 假设我 ilow 和 ihigh分别是10和20, 那么结果是怎样呢


情景重现


# version: python2.7

 

a = [1, 2,

  • 点赞  0
  • 收藏
  • 扫一扫分享朋友圈

    二维码

  • 分享

全部回复 (0) 倒向排序

课程推荐

社区热门帖