利用倒序切片对 1 - 100 的数列取出:* 最后10个5的倍数。我的答案是这个,验证是对的L = range(1, 101)print L[-46::5]但是看到答案里有:L = range(1, 101)print L[4::5][-10:]怎么L后面有两个范围?没懂
1 回答
已采纳
清波
TA贡献165条经验 获得超90个赞
答完这个就去看优酷了。。。
L = range(1,101) ## Python3.x : L=list(range(1,101)) L 是一个1到100(包括)的列表 ## 分开来看如果 只打印 L[4::5]的话 print L[4::5] [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] ## 解释 L[4::5] 是L 从第五个元素开始到最后一个 以步长为 5 做切片, 定语有些长,但是这个操作就是 给出起点, ## 终点 和 步长 , 然后在起点 和终点间 每隔 一定数量(步长)挑出一个数, 然后把这些数放到一个列表中, 也就 ## 是说, L[4::5] 本身就是个列表, 呃 ,有点废话, 因为上面已经打印出来了。 ## 好我们知道了L[4::5] 其实就是个列表, 那么它后面接着跟上中括号做切片 再生成别的列表就好理解了,如下 L[4::5][-10:] ## 解释也就是说 把 L[4::5] 这个列表 在做一次切片,这是切片时从倒数第10个元素起,到最后,这也就是所谓的 ## 最后10个5的倍数
在代码外面在解释下最后一句话:
最后10个 5的倍数
其实 L[4::5] 完成的是 5的倍数, 而 后面那个中括号 [-10:] 完成的是 最后10个; 恰好是倒过来的。。。
添加回答
举报
0/150
提交
取消