【Python拾遗】python切片

Python中的列表切片非常灵活,要根据表象来分析它的内在机理,这样用起来才能溜。

一、切片实例

>>> str = "helloworld"
>>> print(str[0:3])      # 截取第一位到第三位
hel
>>> print(str[:])        # 截取全部,第一个参数默认为开头,第二个参数默认为最后
helloworld
>>> print(str[6:])       # 截取第七位到结尾
orld
>>> print(str[:-3])      # 截取第一位到倒数第三位
hellowo
>>> print(str[2])        # 截取第三个字符
l
>>> print(str[-1])       # 截取倒数第一个字符
d
>>> print(str[-4:-1])    # 截取倒数第四位到倒数第二位的字符
orl
>>> print(str[-3:])      # 截取倒数第三位到结尾
rld
>>> print(str[8:2:-2])   # 第三个参数表示截取间隔,负号表示逆序截取,第三个参数delta默认为1
loo
>>> print(str[::-1])     # 字符串逆序
dlrowolleh
>>> print(str[1:5:-1])   # 当第三个参数为负时,第一个参数的位置要在第二个参数的右边
# 这边输出为空

可见,列表的下标有三个参数:

第一个参数beg:起始下标

第二个参数end:终止下标

第三个参数delta:表示步长

  • 当delta<0时,beg默认为len(array)-1,end默认为开头之前(和range一样,end位取不到)。注意:delta<0时,beg位表示的位置要在end位之后,因为delta<0时是从后往前倒过来处理列表
  • 当delta>0时,beg默认为0,end默认为最末之后。
  • 当delta未给出时默认为1,未给出即没有第二个冒号和其后的数字

记住倒数第一个元素的索引是-1

还需要注意的是,列表切片产生的是列表的副本,与原列表不是同一份空间。看下面示例

>>> x = [1,2,3]
>>> y = x[:]
>>> x[0] = -1
>>> print(y)    
[1,2,3]

 

二、列表切片写操作

x[from:to]=[element1,element2,...]
  • 当to<=from时,进行插入操作,即不对原列表进行替换,而是直接在from位置插入等号右边列表的元素
  • 当to>from时,进行替换操作,即将原列表from到to-1位置的元素替换成等号右边列表的元素
>>> x = [1,2,3,4,5]
>>> x[2:1] = [100,200]      #to<=from,在from位置插入等号右边列表的元素
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:0]          #对于切片del操作,如果to<=from,不执行任何操作
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:2]
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:4]
>>> x
[1, 2, 3, 4, 5]
>>> x[2:4] = None      #应该用列表
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> x[2:4] = [None]
>>> x
[1, 2, None, 5]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值