Python 极简教程(十)切片 slice

我们可以从已有的序列可以截取部分,生成一个新的序列。这个过程就是切片

因为是对序列进行切片,因此列表、元组和字符串都可以进行切片操作。

切片的基本语法:

seq[x:y]  # 截取序列 seq ,从索引 x 开始 截取到 y-1 为止

首先我们回顾一下序列的索引。比如对于列表 ['a', 'b', 'c', 'x', 'y', 'z']:
index
索引分为正向索引和负向索引:

  • 正向索引:从 0 开始,从左至右;
  • 负向索引:从 -1 开始,从右至左。

切片就是通过索引实现:

>>> li = ['a', 'b', 'c', 'x', 'y', 'z']
>>> li[2:5]  # 截取索引从2到4的元素(5要减1)
['c', 'x', 'y']
>>> li[3:-2]  # 截取索引3到-3的元素(-2减1就是-3)
['x']
>>> li[:4]  # 如果冒号前面什么都不写,表示从0开始截取
['a', 'b', 'c', 'x']
>>> li[3:]    # 如果冒号后面什么都不写,表示截取到最后一个元素
['x', 'y', 'z']
>>> li[1:-1]  # 去掉第一个和最后一个
['b', 'c', 'x', 'y']

一定要注意,在切片(seq[x:y])的过程中,x 索引必须在 y 索引的左边,也就是取值必须从左到右,否则就什么都取不到。特别是正负向索引混用的时候要注意,不要搞混了:

>>> li = ['a', 'b', 'c', 'x', 'y', 'z']
>>> li[-1:2]  
[]
>>> li[5:3]
[]
>>> li[-3:2]
[]

切片中还可以设置步长,也就是再使用一个冒号,步长用于表示截取的跨度,也就是隔几个取一次:

>>> li = ['a', 'b', 'c', 'x', 'y', 'z']
>>> li[1:-1:2]  # 从1开始到-2结束,隔1个元素取1个值
['b', 'x']
>>> li[::-1]    # 还可以通过 -1 步长来倒叙排列列表
['z', 'y', 'x', 'c', 'b', 'a']

元组与字符串也都可以进行切片,操作方式与列表相同:

>>> s = 'helloworld'
>>> s[3:8]
'lowor'
>>> s[2:-5]
'llo'
>>> t = (7,8,9,10)
>>> t[1:-1]
(8, 9)
>>> t[2:]
(9, 10)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值