Python中的切片

在前几篇文章中我提过切片的用法,今天详细来聊下Python中的切片,名字看起来难以理解,别慌!我的理解切片就是截取序列中元素的一种方式;所谓的序列就是有顺序的列表,如:字符串str、列表list、元组tuple都是序列:

eg:

list = [1,2,3]
print(list[0]) # 1

上边代码,获取了list列表中第一个元素,如果我们想获取列表中后两位元素怎么办呢?

切片就上场了:

切片基本用法

list = [1,2,3]
print(list[1:3]) # [2,3]
print(type(list[1:3])) # 类型是list列表 <class 'list'>

上边代码,[ 1:3 ] 的意思是从索引1开始截取,一直截取到列表中的索引3( 1和3都是列表list中的索引 ),切片永远符合左闭右开的原则,也就是左边的能取到,右边的取不到,所以要截取到的索引为3,当然只要写比2大的数都可以(与range函数里边两个参数的情况相同,都是左闭右开)

 

简写

情况一:如果从某个索引开始一直截取到最后,冒号后边的索引可以去掉:

list = [1,2,3]
print(list[1:]) # [2,3]

情况二:如果从索引0开始截取0可以省略

list = [1,2,3,4,5]
print(list[:2]) # [1,2]

情况三:如果从0开始截取到最后前后索引都可以省略,等于复制了一个list列表

list = [1,2,3,4,5]
print(list[:]) # [1,2,3,4,5]

 

倒数切片

Python中也可以倒着截取元素,

list = [1,2,3,4,5]
print(list[-1:]) # [5] 从倒数第一位开始,一直截取到最后
print(list[-3:]) # [3,4,5] 从倒数第三个元素开始,截取到最后
print(list[-3:-1]) # [3,4] 从倒数第三个元素开始,截取到倒数第一位(不包含倒数第一位)

上边代码,倒着切片时注意,冒号前后的数不是索引了,也就是什么数就从第几位开始截取,当然还是符合左闭右开的原则冒号左边的能取到,冒号后边的取不到!!!

 

有步长的切片

有步长的切片是指两个冒号情况,最后冒号右边代表步长

list = list(range(10)) #[0,1,2,3,4,5,6,7,8,9]
print(list[::2]) # [0,2,4,6,8]

上边代码,我们通过range函数生成0~9的整数,然后用list函数生成一个list列表 ; 第一个冒号前后没有索引,表示从0一直截取到最后,第二个冒号后边的2代表每次截取时步长 。(与range函数三个参数情况相同)

在来看个例子:

list = list(range(10))
print(list[1::2]) # [1,3,5,7,9]

上班代码,从1开始截取,一直截取到最后,步长是2。

当然了,字符串、元组也能使用切片来截取里边的元素,在这里就不一一举例了,大家自己写写!

最后再来一个demo:

实现一个trim()函数,就是去除字符串前后空格:

str = " hello "
newStr = str[1:len(str)-1]
if newStr == 'hello':
    print("已去掉前后空格") # 已去掉前后空格

总结下:在python中,切片可以实现许多循环可以实现的操作,以后我会不断的更新,有不足之处,希望指出!

 

2019/9/11 ——补充:

可以使用切片来逆序字符串 或者 列表 或元组:

l = [1,2,3,4]
s = 'abc'
t = (1,2,3)
print(l[::-1]) # [4, 3, 2, 1]
print(s[::-1]) # cba
print(t[::-1]) # (3, 2, 1)

2020/12/5 ——补充:

[::] 会生成新列表,且新生成的列表与原列表内存地址并不相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值