Python中的切片知识
在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。 普通索引只取出序列中 一个下标 对应的元素,而切片取出序列中 一个范围 对应的元素,这里的范围不是狭义上的连续片段。通俗一点就是在一定范围里面.用刀切出一部分,达到自己需要的一部分.
python字符串切片及常用的方法
用于处理列表的部分元素,Python称之为切片
结构: [start:end:step] 不指定step(步长)时,默认step(步长)为1
一般是不加步长,即取一段连续的索引
对于step:
(1)当step为负数时,即取反
a = 'ABCDE' print(a[::-1]) print(a[::-2])
EDCBA
ECA
可以看到,步长为-1则是取反且取得是一段连续的索引,而为-2的时候,则是取反的同时按照步长去取索引值
(2)step为正数时,则按照从左到右的顺序按步长取值
即步长的符号决定了取值的方向,为正则从左往右取,为负则从右往左取,其值决定了取那些数据
对于
a = 'ABCDE' print(a[0:6:-1])
其输出的是空,原因就在于其取值方向,负数代表从右往左取值,而对于切片是索引0-6,而取值是按照从右往左取值,0的左边没有值,所以取得就是空的
要想有取值,这时我们切片的方向也应该是从右往左,即
a = 'ABCDE' print(a[-1:-6:-1]) print(a[6:0:-1])
EDCBA
EDCBA
切片的起点和终点已经决定了其排列的顺序,对于0-6,其排列就是ABCDE,对于-1到-6(或者6到0)其排列就是EDCBA,而步长及其符合只是决定了最终取值的顺序和内容,并不会改变其排列的顺序,所以这也就是为什么print(a[0:6:-1])输出的是空的原因。
切片案例
编写程序。新建一个空列表哦,向其中添加10名同学的成绩(百分制)。
显示此列表中所有成绩的最高成绩,最低成绩,平均成绩。
将列表降序排序后,使用切片显示前三名成绩,后三名的成绩,排在第3名到第5名成绩;
使用切片在列表首部插入一个100分,在尾部追加一个0分;
使用切片将此时的列表的后五个数全部替换为60;
使用切片删除倒数第1,3,5三个数;
最后显示所有的成绩。
代码案例
list=[]#建立空列表 for i in range(1,11,1): cj=int(input("请输入成绩")) list.append(cj) list.sort(reverse=1)#列表排序 print("最高成绩",list[0])#输出最高成绩 print("最低成绩",list[9])#输出最低成绩 m=sum(list) print("平均成绩",m/10)#输出平均成绩 print("前三名成绩",list[0:3:1])#输出前三名成绩 print("排在第3名到第5名成绩",list[2:5:1])#输出排在第3名到第5名成绩 print("后三名成绩",list[7:10:1])#输出后三名成绩 list[:0]=[100]#在首部插入100分 list[11:]=[0]#在尾部追加一个0分 list[7:]=[60,60,60,60,60]#替换列表后5个数为60 del list[11:12]#删除倒数第一个数 del list[9:10]#删除倒数第三个数 del list[7:8]#删除倒数第五个数 print(list)
运行结果如下