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

代码不懂,为什么是这样的

print L[4:50:5]

正在回答

3 回答

从L的第5个数到第51个数,每隔5个数就取该数值

0 回复 有任何疑惑可以回复我~
#1

没有什么不可能 提问者

非常感谢!
2016-05-02 回复 有任何疑惑可以回复我~
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 回复 有任何疑惑可以回复我~
#1

没有什么不可能 提问者

真的灰常感谢,你说的这么详细
2016-05-02 回复 有任何疑惑可以回复我~

下标索引是从0开始,前10个是5倍数的值在【0,50)范围内

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

代码不懂,为什么是这样的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信