python的卸载,python怎么删掉代码
在使用Python解决各种实际问题的过程中,经常会从一个对象中提取一些值。切片操作是实现这一点的有力武器。从理论上讲,只要条件表达式合适,通过一次或多次切片操作就可以得到任意的切割目标值。切片操作的基本语法很简单,但如果没有彻底理清内部逻辑,就很容易出现错误,而且错误有时隐藏得很深,难以察觉。本文通过详细的例子总结了切片操作的各种情况。如有错误或不足,请向dbdlr指出!
另一方面,Python可共享对象的索引方法包括两部分:正索引和负索引。
如下图所示,以a=[ 0,1,2,3,4,5,6,7,8,9]为例。
二。Python切片操作的一般方式一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数step=1。
切片的基本表达式:object[start _ index:end _ index:step]http://www.Sina.com/:可以是正数。其绝对值决定了切割数据时的“步长”。If 3358www。Sinna步长省略,默认值为1,即从左到右以1为增量表示。"step! ""正负号决定了“切取方向”! ""切取方向非常重要!重要的事情说三遍!
切取方向非常重要:起始索引(包括索引本身);如果省略该参数,则意味着该值取自对象的“端点”。是从“起点”还是“终点”开始,由步长参数的正负决定,步长完全从“起点”开始。
切取方向非常重要:表示您想要结束索引。不包括指数本身。如果省略此参数,则表示数据的“终点”、“起点”或“终点”。如果step为正,则表示到达终点。
三。Python切片操作的详细例子下面的例子都是以列表a=[ 0,1,2,3,4,5,6,7,8,9]为例。
a=[ 0,1,2,3,4,5,6,7,8,9 ]
1.单值a[0]0 a[-4]6 2。完成对象a[:] #从左到右[0,1,2,3,4,5,6,7,8,9] a [3360360] #从左到右0 )3.start_index和end A[6:1] # step=1确定从左到右的值,start_index=6到end_index=1确定从右到左的值,这是矛盾的。[] #也输出到一个空列表。A[:6] # step=1,从左到右取值,从“起点”到end_index=6。[0,1,2,3,4,5] a [:63360-1] # step=-1,从“终点”到end_index=6。[9,8,7] a [6:] # step=1,从左到右取值,从start_index=6开始,直到“end”。[6,7,8,9] a [633603360-1] # step=-1,从右向左取值,从start_index=6开始,到“起点”。[6, 5, 4, 3, 2, 1, 0 ]4.如果start _ index和end_index都是负(-)索引,则从左到右取值a(-1:-6) #step=1。
价值。[9,8,7,6,5]a[-6:-1] # step=1,从左到右取值,而start_index=-6到end_index=-1也从左到右取值。[4,5,6,7,8]a[:-6] # step=1,从左到右取值,从“起点”开始,到达end_index=-6。[0,1,2,3]a[:-6:-1] # step=-1,从右向左取值,从“终点”开始,到达end_index=-6。[9,8,7,6,5]a[-6:] # step=1,从左到右取值,从start_index=-6开始,一直到“终点”。[4,5,6,7,8,9]a[-6:-1] # step=-1,从右到左取值,从start_index=-6开始,一直到“起点”。[4, 3, 2, 1, 0] 5.start _ index和end_index a[1:-6] # start_index=1的正()负(-)混合索引的情况在end_index=-6的左侧,所以从左到右取值,step=1也决定了从左到右取值。[1,2,3] A [1:-6:-1] # start _ index=1在end_index=-6的左边,所以从左到右取值,但是step=-从右到左确定值,这是矛盾的。[]a[-1:6] # start_index=-1在end_index=6的右边,所以从右向左取值,但是step=1从左向右取值,这是矛盾的。[]a[-1:6:-1] # start_index=-1在end_index=6的右边,所以从右向左取值,step=-1也是从右向左取值。[9, 8, 7] 6.连续切片操作a[:8][2:5][-1:] [4]等价于:
a[:8]=[0,1,2,3,4,5,6,7]
甲[:8][2:5]=[2,3,4]
a[:8][2:5][-1:]=4
理论上,只要最后返回的对象仍然是非空的可切片对象,就可以无限期地执行连续切片。
7.切片运算的三个参数可以用表达式a[2 1:3*2:7%3] #表示即:a[2 1:3*2:7%3]=a[3:6:1] [3,4,5] 8。前面对其他对象的切片操作是以list为例来说明的,但是
(0,1,2,3,4,5)[:3] #元组(0,1,2)ABCDEFG[:2] #字符串 aceg 对范围(1,100)中的I的切片操作[2: 3] [-10:] Print (i,end=) 72 75 78 81 84 87 90 93 96 99 IV。Python常用的切片操作如下表所示:a=[0,1,2,3,4,5,6,7,8,9]
1.取偶数位置b=a[:2][0,2,4,6,8] 2。取奇数位置b=a[1:2][1,3,5,7,9] 3。复制整个对象b=a[:]# print(b)#[0]9]print(id(a))# 41946376 print(id(b))# 41921864 b=a . copy()print(b)#[0,1,2,3,4,5,6,7,8,9] print (id (b)
A=[1,2,[a , b]] print (a={} 。格式(a)) a=[1,2,[a , b]] #原始ab=a[:]b[0]=9 #修改a=[1,2,[d , b]]打印( b={} 。format (b)) # modified bb=[9,2,[D ,B]] print (id (a)={} 。format(id(a)))id(a)=38669128 print( id(b)={ } 。format (id (b)) id (b)=38669192 6,7,8,9] 5。在某个位置插入元素A [3: 3]=[A , B , C] [0,1,2, A , B , C ,3,4,5,6,7,8]。9] 6.替换A [3: 6]=[a , b] [0,1,2, A , b ,6,7,8,9]元素的一部分五、总结(1)[:]和.copy()都属于“浅拷贝”,只拷贝最外层元素,内层嵌套元素则通过引用,而不是独立分配内存。,否则无法正确切割数据:当start_index的位置在end_index的右边时,表示从右向左取值。此时,步长必须为负(也表示从右向左)。特殊情况,start_index、end_index、step可同为正、同为负,也可正负混合使用。但必须遵循一个原则,即两者的取值顺序必须是相同的,但是正反结果完全不一样,因为一个是左,一个是右。
(2)使用切片时,必须考虑step的正反,尤其是省略step时。比如a[-1:]很容易被误认为是从“终点”出发,一直到“起点”,即a[-1:]=[0,1,2,3,4,5,6,7,8,9],而实际上是A [-1:]=a[-1]
原文略有改动。
作者:马尔代夫马尔代夫
原文链接:https://www.jianshu.com/p/15715d6f4dad
转载于:https://www.cnblogs.com/malinqing/p/11272485.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。