python中切片

切片

切片(slice)是取部分元素的操作。
列表list,字典dic,字符串,元组均可进行切片操作。
提取单个元素时,返回结果的类型为该元素的类型;切片返回值类型为列表。

索引方式

索引具有方向性,包括正索引和负索引,以list对象a=[0,1,2,3,4,5,6,7,8,9]为例:
从左向右索引为0,1,2,3,4,5,6,7,8,9
从右向左索引为-1,-2,-3,-4,-5,-6,-7,-8,-9,-10

操作方式

切⽚操作基本表达式:object[start_index:end_index:step],当只有一个:时,默认第三个参数step=1
step:正负数均可,绝对值决定了切取数据时的步长,正负号决定了切取方向,正表示从左往右取值,负表示从右往左取值。
start_index: 表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值,至于是起点还是终点开始,取决于step的正负。
end_index: 表示终止索引(不包含该索引对应值);该参数省略时,表示一直取到数据”端点“,至于是起点还是终点,取决于step的正负。

切取单个元素

a=[0,1,2,3,4,5,6,7,8,9]
a[2] #切取单个元素
2
a[-3] #倒序切取单个元素
7

切取完整对象

a=[0,1,2,3,4,5,6,7,8,9]
a[:] #从左往右全部切取
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[::-1] #从右往左全部切取
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

切取方向

取值方向由三个参数共同决定,起始索引到终止索引的方向与step所表示的取值方向需一致,不可矛盾,若矛盾输出为空列表。

a=[0,1,2,3,4,5,6,7,8,9]
a[1:6] #从索引为1的元素取到索引为6的元素前一个元素,起始索引到终止索引方向为从左至右,步长1为正数,方向也为从左至右
[1, 2, 3, 4, 5]
a=[0,1,2,3,4,5,6,7,8,9]
a[1:6:-1] #起始索引到终止索引方向为从左至右,步长-1为负数,方向为从右至左,矛盾,故输出结果为空列表。
[]
a=[0,1,2,3,4,5,6,7,8,9]
a[-1:-4:1] #起始索引到终止索引方向为从右至左,步长1为正数,方向为从左至右,矛盾,故输出结果为空列表。
[]
a=[0,1,2,3,4,5,6,7,8,9]
a[-1:-4:-1] #起始索引到终止索引方向为从右至左,步长-1为负数,方向为从右至左,一致。
[9, 8, 7]

多层切片

切片得到的结果还可以进行切片,只要上一次返回的是非空切片对象。

a=[0,1,2,3,4,5,6,7,8,9]
a[1:7][2:3]
[3]

切片常用操作

a=[0,1,2,3,4,5,6,7,8,9]
# 修改单个元素,直接赋值
a[2]='apple'
a
[0, 1, 'apple', 3, 4, 5, 6, 7, 8, 9]
# 在某个位置插入元素
a[2:2]=['a','b','c'] #在索引为2的位置插入元素
a
[0, 1, 'a', 'b', 'c', 'apple', 3, 4, 5, 6, 7, 8, 9]
#替换一部分元素
a[:2]=[10,11] 
a
[10, 11, 'a', 'b', 'c', 'apple', 3, 4, 5, 6, 7, 8, 9]
# 复制整个列表
a=[0,1,2,3,4,5,6,7,8,9]
b=a[:]
b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a.append(20)
print(a)
print(b) #以切片方式复制列表,当a列表发生变化时,b列表不会相应变化
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 如果是赋值,则b列表会跟着变化。
a=[0,1,2,3,4,5,6,7,8,9]
b=a
b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a.append(20)
print(a)
print(b)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值