Python中列表/字符串切片slice?

(1)、lst = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
#lst[3*3::3] output:[9, 12, 15]
lst[3*3::3] = len(lst[3*3::3])*[0]
output:[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 0, 13, 14, 0]
(2)、s = '0123456789'
s[::-1] '9876543210'
s[::-2] '97531'
s[::-3] '9630'
s = '0123456789'
s[:2:-1] '9876543'
s[1:2:-1] ''
s[2:1:-1] '2'
s[2::-1] '210'
s[-1:-2:-1] '9'
s[-1:-5:-2] '97'
这两段看不懂能否帮忙详细就此题解答?

s = '0123456789'
s[::-1]:表示将s倒序排列
s[::-2]:表示将s倒序排列并且步长是2
s[::-3]:表示将s倒序排列并且步长是3

s[:2:-1]:表示将s倒序排列,并且到s的第2个元素就结束
s[1:2:-1]:表示将s倒序排列,并且从第一个元素开始,第二个元素结束

s[-1:-5:-2]:表示将s倒序排列步长为2,也就是'97531'。然后是从s的-1个元素位置开始,也就是9。到s的-5个元素结束,也就是5,但不包括5。最后的结果也就是'97'
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-15
不知道你那里不懂,,这个挺简单的啊。 给你解释两个你就明白了
lst[3*3::3] output:[9, 12, 15] 中 中括号第一个:前是从3*3开始,第二个:是空也就是没有结束走完整个集合,第三个:后是 3 也就是步长 3 。
s[:2:-1] '9876543' 这个是 第一个:前为空 也就是开头,第二个:后是2 也就是到 2 结束。第三个:后是 -1 也就是反向字符串,或者理解为从右开始数本回答被网友采纳
第2个回答  2019-11-15
你好的!
这个是基础知识:
(一)start_index、end_index、step可同为正、同为负,也可正负混合使用。但必须遵循一个原则,否则无法正确切取到数据:当start_index的位置在end_index的左边时,表示从左往右取值,此时step必须是正数(同样表示从左往右);当start_index的位置在end_index的右边时,表示从右往左取值,此时step必须是负数(同样表示从右往左),即两者的取值顺序必须是相同的。对于特殊情况,当start_index或end_index省略时,起始索引和终止索引由step的正负来决定,不会存在取值方向出现矛盾的情况(即不会返回空列表[]),但正和负取到的结果是完全不同的,因为一个向左一个向右。
(二)在利用切片时,step的正负是必须要考虑的,尤其是当step省略时。比如a[-1:],很容易就误认为是从“终点”开始一直取到“起点”,即a[-1:]= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],但实际上a[-1:]=a[-1]=9,原因在于step=1表示从左往右取值,而起始索引start_index=-1本身就是对象的最右边的元素了,再往右已经没数据了,因此只有a[-1]一个元素。

具体百度一下python切片详解!
望采纳
相似回答