解题过程:
2,4,9,3,0,7,55,31,25,17
[0,1,2,3,4,5,6, 7, 8,9]
40
38=40-2 [4,9,3,0,7,55,31,25,17] 1
36=40-4 [9,3,0,7,55,31,25,17] 2
31=40-9 [3,0,7,55,31,25,17] 3——7
[i,nums[i+1:].index(res)+i+1]
[2,nums[3:].index(31)+2+1]
[2,4+2+1]
[2,7]
切片操作
索引是从0开始的,因为内存地址是从0开始,若以0为基准数,偏移量就是地址,简化了内存地址计算。
以0,1,2,3,4,5,6,7,8,9这十个数字为例:
例1:
>>>a[1:6:-1] # step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾。
>>> [ ] # 输出为空列表,说明没取到数据。
例2:
>>>a[-1:-6] # step=1,从左往右取值,而start_index=-1到end_index=-6决定了从右往左取值,两者矛盾。
>>> [ ]
例3:
>>>a[:6:-1] # step=-1,从右往左取值,从“终点”开始一直取到end_index=6。
>>> [9, 8, 7]
例4:
>>>a[6::-1] # step=-1,从右往左取值,从start_index=6开始,一直取到“起点”。
>>> [6, 5, 4, 3, 2, 1, 0]
步长为正,左闭右开;
步长为负,左开右闭
index() 函数
index() 函数用于从序列s中找出某个值第一个出现时的索引位置。
s.index(x[,i[,j]])
s——序列类型数据(字符串、元组、列表)
x—— 查找的对象。
该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。