Python中切片(Slicing)的运用(:运算符)

总结:
1,对切片赋值,相当于替代原list中的切片部分,赋值的list不必与切片长度一致,也可以将切片赋值给新的变量,用以取原list中的一部分;
2,list中的元素在切片中可以用正数索引或负数索引表示,正向索引为0,1,2……,第一个元素索引为0;负向索引-1,-2,-3,……最后一个元素索引-1;
3,可以指定间隔进行切片。

局限:
只能对连续段或固定间隔的元素进行切片,无法对多段元素进行提取。我会在后面的博客中探讨对列中更复杂的切割合并问题。

切片Slicing是python非常有用的一个功能,用运算符:实现,这个运算符很强大,有时候也有一点复杂,我简单梳理一下作为入门者的一些参考。

当你需要一个序列的子串的时候,你就可以使用切片操作。例如:

a = ['a','b','c','d','e','f','g']
在a这个序列中,如果你想截取里面['c','d','e']这个子序列,那么你就可以使用切片a[2:5]
它的语法形式是a[start:end],这里有一个区间边沿取值的问题。首先你要明确序列的索引是从0开始的,a[2:5]取值的范围是[2,5),前面是闭区间,后面是开区间,也就是2<=索引值<5这段区间里的元素。所以如果这样来切的话:a[1:1],得到的就是[],空序列。

索引也可以为负,从后往前依次是-1,-2,-3,……

nums = range(5)    # 建立一个从0-5的list
print nums         # 打印出 "[0, 1, 2, 3, 4]"
print nums[2:4]    # 得到索引从2(包括)到4(不包括)的切片; 打印 "[2, 3]"
print nums[2:]     # 得到索引从2(包括)以后的切片;打印 "[2, 3, 4]"
print nums[:2]     # 得到索引从开始到2(不包括)的切片;打印 "[0, 1]"
print nums[:]      # 得到所有元素的切片,相当于啥也没做; 打印["0, 1, 2, 3, 4]"
print nums[:-1]    # 索引可以为负,这里得到从开始到索引为-1(最后一个元素,不包括); 打印["0, 1, 2, 3]"
nums[2:4] = [8, 9] # 对索引从2(包括)到4(不包括)的元素赋值,可以理解为用等号右边的替代切片
print nums         # Prints "[0, 1, 8, 9, 4]"

对切片赋值长度不等于切片长度时,依然可以复制,切片部分被赋值部分完全替代。

>>> a = ['a','b','c','d','e','f','g']
>>> a[2:5] = ['1','2']
>>> print a
['a', 'b', '1', '2', 'f', 'g']
>>> a = ['a','b','c','d','e','f','g']
>>> a[2:5] = ['1','2','3','4']
>>> print a
['a', 'b', '1', '2', '3', '4', 'f', 'g']
不仅能通过赋值改变原list的元素和长度,还可以将原list的切片赋值给新的list:

>>>a = ['a','b','c','d','e','f','g']
>>>b = a[2:7]
>>>print b
['c', 'd', 'e', 'f', 'g']

指定间隔提取切片,下面以间隔3为例,即在切片范围内每3个元素取一个:

>>>a = ['a','b','c','d','e','f','g','h','i','j','k']
>>>b = a[2:9:3]
>>>print b
['c', 'f', 'i']

索引为负数时,可以产生相同的结果:

>>>a = ['a','b','c','d','e','f','g','h','i','j','k']
>>>b = a[-9:-2:3]
>>>print b







  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值