python切片小结

  • 索引方向相互矛盾,值为空

切片:

python中切片是用来切割可迭代对象(容器)

一个完整的切片是包含三个参数和两个冒号

start:切片的起始位置,如果没有值的话从头开始

end:切片的结束位置,但是不包含end(前闭后开),如果没有值的话表示切割到结束为止

step :步长,默认取值为1,如果为正数的情况表示从左往右,如果为负数表示从右往左

 

 如果掌握切片方法,就能对所有目标值进行随意切取,可切片的目标对象有2种索引方向:正索引负索引。如下图所示,
以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]举例:

 

1、切取单个对象

切取索引为3的位置所对应的值:

2、切取整个列表

不填写值的时候,从端点处开始

 

 

3、步长step正负值 决定索引方向的一些案例

  • step=1,由左向右,包含start_index =1索引本身包括的值,不包括终止索引end_index =5本身包含的值。
  • 
    >>> a [1: 5: ]
    [1, 2, 3, 4]
    >>> # 步长step = 1,默认值,由左往右正索引方向
    
  • step = -1,由右向左,依旧不包含终止索引=5本身所包含的值
>>> a [ : 5 :-1]
[9, 8, 7, 6]
>>> # 步长step= -1,负索引,
起始索引没写,表示从端点开始由右往左,终止索引是5
  • 索引方向相互矛盾,值为空
>>> a [7 : 2 ]
[]
>>> # 这是因为起始索引为7终止索引为2,方向是由右往左,
>但是步长step默认是1,表示正索引,由左往右,两者方向矛盾值为空
  • 索引值为负的情况,
    一切以step值正负为准,决定索引方向!
>>> a [ -6 : :]
[4, 5, 6, 7, 8, 9]
>>> #起始于 start_index = -6,步长为1,由左向右
  • 根据前面所学,切片结果包含起始索引位置的值,但不包含终止索引位置的值,这种情况指的是给定了具体的终止索引,如下:
>>> #给了明确的终止索引位置,那结果就不包含终止索引本身的值
如下不包含end_index = 5位置上的值
>>> a [ : 5 : -1 ]
[9, 8, 7, 6]
  • 这个案列是包含了终止索引位置的值,参照上条加入对比。
    也就是说,指定了具体的终止索引位置,那么取值不包括这个位置上的值,如果没指定,默认终止索引就在端点处,那么取值包括该位置的值

>>> a [ 5: : -1]
[5, 4, 3, 2, 1, 0]
>>> #没有指定具体的终止索引位置,所以默认终止于端点处,
因此包含端点处的值,即0

 

4.修改某个元素值

直接将修改后的值带入进索引里面

>>> a [ 2 ] = [ 'A' ]
>>> print (a)
[0, 1, ['A'], 3, 4, 5, 6, 7, 8, 9]
 #直接在需要修改的索引处赋值,将索引值 = 2的值修改为['A']

5.替换元素值


是从起始索引开始,包含起始索引本身的值,将数值插入,然后再将终止索引本身及以后的值,紧跟在插入数值后面就行了,不包含终止索引本身。下面以替代索引3和5之间的元素为案例分析
包含 “起始索引=3 ”的元素本身,不包含”终止索引 = 5“的元素本身,元素个数应该是2个。

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5] = [ 'b', 'c']
>>> print (a)
[0, 1, 2, 'b', 'c', 5, 6, 7, 8, 9]

 

6、插入元素值

切片这里,最困惑的就是没理解替换元素值、和插入元素值两者的区别,现在恍然大悟,替换的原理如上所述,接下来插入元素值其实很简单,只要保持,终止索引、起始索引是同一个值再进行赋值就可以了

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [6:6 ] = ['c', 'd', 'e', 'f','g']
>>> print (a)
[0, 1, 2, 3, 4, 'b', 'c', 'd', 'e', 'f', 'g', 5, 6, 7, 8, 9]

总结:

1. 如果进行切片操作的时候,超出下标不会报错

2. 如果切片操作的时候方向相互矛盾的话,不会报错,返回的空

3. 在python中进行反向输出列表

第一种:循环 第二种:[::-1] 第三种:reverse() 

 综上,这就是python切片的小结

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值