版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cadi2011/article/details/85852851
0、原有的List有10个元素,此时你只想对一部分元素,比如其中4个元素,或者某个范围的5个元素,然后再进行一些增删改查的操作,切片就是完美的东东
比如你只想对下标是偶数的元素进行一个操作,当然通过step,就可以满足你的需求,卧槽
切片真是牛了大b了!!!!
1、指定开始下标、指定结束下标(不含结束下标的元素),然后得到一个List
from utils import printListWithChinese
person_dev_group = ["徐强","倍总","航神","大牛","tom", "david","tyson","王大爷","陈总","牛逼的年强"]
printListWithChinese(person_dev_group)
tempList = person_dev_group[0:5] #第一种切片,指定开始下标、指定结束下标(切片不会含该元素),获取一个范围的元素
printListWithChinese(tempList)
tempList.append("王八蛋") #为切片获得的List,添加一个元素
printListWithChinese(tempList)
printListWithChinese(person_dev_group) #打印原有的List 查看不受任何影响
输出结果:
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['徐强', '倍总', '航神', '大牛', 'tom']
['徐强', '倍总', '航神', '大牛', 'tom', '王八蛋']
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
2、你也可以省略开始下标,其实切片的语法组成是[开始下标:结束下标:元素步长],省略了步长,其实默认的步长是1
等同于[:5:0]
tempList = person_dev_group[:5] #第二种切片,省略开始下标(默认从0开始)、指定结束下标(切片不会含该元素),获取一个范围的元素
3、你也可以省略结束下标
tempList = person_dev_group[5:] #第三种切片,指定开始下标、省略结束下标,省略的结束下标会是List的长度
输出结果:
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['david', 'tyson', '王大爷', '陈总', '牛逼的年强'] #切片后的list
4、你也可以省略开始下标、同时省略结束下标
tempList = person_dev_group[:] #第四种切片,省略开始下标(默认从0开始)、省略结束下标(默认是list的长度),获取一个范围的元素
输出结果:
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
5、显式指定开始下标、结束下标、步长
tempList = person_dev_group[1:3:1] #第五种切片,指定开始下标、指定结束下标,指定步长为1(也是步长的默认值)
输出结果:
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['倍总', '航神']
如果你将步长显式的写为0,会给你个错误的
ValueError: slice step cannot be zero
6、将步长改为非1的情况,看看切片是怎么运作的,呵呵,切片不填写时,默认的step是1
tempList = person_dev_group[1:7:2] #第六种切片,指定开始下标、指定结束下标,指定步长为2
输出结果:
解释: “倍总”的下标是1、那么下标1 + 步长2 = 下标3、下标3的元素是"大牛",所以才有下面的输出哦
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['倍总', '大牛', 'david']
7、当然你也可以省略开始下标、结束下标、只填写一个step,
tempList = person_dev_group[::2] #第七种切片,单纯的仅仅指定step,把开始下标、结束下标全部省略
输出结果:
['徐强', '倍总', '航神', '大牛', 'tom', 'david', 'tyson', '王大爷', '陈总', '牛逼的年强']
['徐强', '航神', 'tom', 'tyson', '陈总']