看不懂答案。。倒序切片问题

利用倒序切片对 1 - 100 的数列取出:

* 最后10个5的倍数。

我的答案是这个,验证是对的

L = range(1, 101)

print L[-46::5]

但是看到答案里有:

L = range(1, 101)

print L[4::5][-10:]

怎么L后面有两个范围?没懂


wuyangzx
浏览 1937回答 1
1回答

清波

答完这个就去看优酷了。。。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个;  恰好是倒过来的。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python