Python列表切片用法示例和细节

Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。

     格式:【start:end:step】

     start:起始索引,从0开始,-1表示结束

     end:结束索引

     step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值

    注意切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引,-2代表列表倒数第二个,以此类推

切记:一定不会包括 list[end] 这个位置的值,当 end为正时 则最后一位是 list[end-1] ,end为负数时, 则最后一位为 list[end+1],一定不会到达 list[end] 这一位置


示例:


a=[1,2,3,4,5,6]


b1=a[:] #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表
print(b1)

结果:[1, 2, 3, 4, 5, 6]


b=a[0:-1:1] #从位置0开始到结束,每次增加1,截取。不包含结束索引位置(-1为最后一个元素索引位置)
print(b)

结果:[1, 2, 3, 4, 5]


c1=a[:3] #省略起始位置的索引,以及步长。默认起始位置从头开始,默认步长为1,结束位置索引为3
print(c1)

结果:[1, 2, 3]


c=a[0:5:3] #从第一个位置到第留给位置,每3个取一个值
print(c)

结果:[1, 4]


d=a[5:0:-1] #反向取值
print(d)

结果:[6, 5, 4, 3, 2]

关键:

真正让人迷惑的是list[start:stop:step]中的start和stop的默认值。

+:即从左向右看,所以start默认是0,stop默认是索引最大值

- :即从右向左看,所以start默认是索引最大值,stop默认是0

 

a = list(range(10))
print(a[5:0:-1])
print(a[5:4:-1])
print(a[:3:-1])  #没有指定,step为负数,start默认为索引最大值
print(a[0:3:-1]) #指定了0,则start从0开始
print(a[9::-1])  #stop没有指定,step为负数,那么stop默认为0

输出:

[5, 4, 3, 2, 1]
[5]
[9, 8, 7, 6, 5, 4]
[]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值