为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

wuyangzx 2016-04-21 11:31:16
利用倒序切片对 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个;  恰好是倒过来的。。。

查看完整回答
2 反对 回复 2016-04-21
  • 1 回答
  • 1 关注
  • 1936 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信