Python之List的指定要访问的元素范围(切片,牛x)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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', '陈总']

猜你喜欢

转载自blog.csdn.net/cadi2011/article/details/85852851