Pyhon-列表切片操作

因为时常用到切片,但是有的时候总是不会逆向返回,或者倒着输出等,所以做下总结。

切片格式:[start:end:step]  三个位置的都可以省略,step默认为1。

a = [1,2,3,4,5]
print(a[1:])       # [2,3,4,5]
print(a[:])        # [1,2,3,4,5]  (start,end) step 默认 
print(a[::])       # [1,2,3,4,5]  (start,end,step)均取默认值 
print(a[::-1])     # [5,4,3,2,1]  step=-1,从-1的位置开始,每次加-1输出全部
print(a[-1:-3:-1]) # [5,4]        end=-3,取不到所以是 [-1,-2]位置的输出
print(a[-1:-3])    # []           staet = -1 从右取值,step=1,从左开始取值,左右矛盾
                   #              未指定正确的索引
print(a[-1:])      # [5]          因为-1是最后一个元素,应该是从最后一个开始取
                   #              但step=1,所以只返回了[5]
print(a[-1])       # 5            注意两者不同 
print(a[1:-2])     # [2,3]        按照正序从index=1的位置开始切片,到index=-3的位置
                   #              上面的这个可以看成前后分别切片组合,到end的前一个是-3 而不是-1

在切片中从左往右是默认的,即step=1。当未指定开始位置时,从端点处开始。从左向右时,index=0。从右向左时,index=-1 or index = klen(list)-1。当start和end 与 step左右不相互矛盾时,返回正确切片,否则返回空列表。 

N*N 维度 (list其实没有这么说的,把它想成矩阵)

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

print(a[1:])       # [[6,7,8,9,0],[1,1,1,1,1]]
print(a[:])        # [[1,2,3,4,5],[6,7,8,9,0],[1,1,1,1,1]]
print(a[::])       # [[1,2,3,4,5],[6,7,8,9,0],[1,1,1,1,1]]
print(a[::-1])     # [[1,1,1,1,1],[6,7,8,9,0],[1,2,3,4,5]] 
print(a[-1:-3:-1]) # [[1,1,1,1,1],[6,7,8,9,0]]
print(a[-1:])      # []
print(a[-1])       # [1,1,1,1,1]
print(a[0:-1])     # [[1,2,3,4,5],[6,7,8,9,0]]

从上面例子可以看出,N*N维度的切片操作和1*N维度的效果是相同的,在N*N维度中,仅是将[ [list_1],[list_2],....,[list_N]]中的每个[list1]、[list2]、[list3]看作是一个1*N中的元素。当list中不在是list,而是其他结构如元组等,也是将一个元组当成一个整体做切片考虑。

写完发现一篇写的很好的博客(看不懂我的例子,可以看下面博客,比我写的好):

https://www.jianshu.com/p/15715d6f4dad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值