总结:
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
今天的文章python切片操作符_python切片举例分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88583.html