-
上限减去下限等于元素个数,比如13 - 2 = 11,刚好就有11个元素。
-
连续的范围没有重叠,比如[2, 13) 和 [13, 25) 是两个连续的范围,13只会包含在后一个里。
下标从0开始
对于10个元素,写成[0, 10)比[1, 11)更合理,理由如下:
-
N个元素,[0, N)比[1, N+1)写法更简洁,不需要+1。
-
某个元素的下标等于排在它前面元素的个数,方便使用,比如:
0 1 2 3 4 5 6 7 8 9
^
前面有4个元素
好用的切片
以上两个数学理论给切片使用带来了很多好处:
-
当只有最后一个位置信息时,可以快速看出有几个元素,比如my_list[:3]返回3个元素。
-
当起止位置信息都可见时,可以快速计算出长度,用stop - start就可以了,比如my_list[1:3]长度为2。
-
利用任意一个下标把序列切割成不重叠的两部分,只要写成my_list[:x]和my_list[x:]就可以了,比如
my_list = [10, 20, 30, 40, 50, 60]
my_list[:3]
[10, 20, 30]
my_list[3:]
[40, 50, 60]
Python里的范围(range)也是忽略最后一个元素,下标从0开始的。
切片间隔
切片除了s[a:b],还有第三个下标s[a:b:c]
,意思是对s在a和b之间以c为间隔取值,c还可以为负,负值意味着反向取值。比如:
‘’’
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333
‘’’
s = “bicycle”
s[::3]
“bye”
s[::-1]
“elcycib”
s[::-2]
“eccb”
a:b:c
更严谨的描述是start:stop:step。
语法如此简洁,用脚想也知道是Python魔法方法干的好事!在对s[a:b:c]
进行求值的时候,Python实际上会调用s.__getitem__(slice(a, b, c))
,熟悉的配方,熟悉的味道。slice(a, b, c)是a:b:c
用在[]中返回的切片对象,slice()是Python内置函数,示例:
invoice = “Mini Kit $34.95 1 $ 34.95”
SKU = slice(0, 8)
print(invoice[SKU])
切片赋值
切片有一个强大功能是给切片赋值,如果把切片放在赋值语句的左边,或把它作为del操作的对象,我们就可以对序列进行嫁接、切除或就地修改操作。示例:
l = list(range(10))
l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[5:7]
l
[0, 1, 2, 3, 4, 7, 8, 9]
l[3:2] = [11, 22]
l
[0, 1, 2, 11, 22, 3, 4, 7, 8, 9]
l[2:5] = [100]
l
[0, 1, 100, 3, 4, 7, 8, 9]
注意,如果赋值的对象是一个切片,那么赋值语句的右侧必须是个可迭代对象,即使只有单独一个值,否则会报错:
l[2:5] = 100
Traceback (most recent call last):
File “”, line 1, in
TypeError: can only assign an iterable
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
66129f47b8a67243c1008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)