清波
楼主问的是列表,及Python中所有可迭代类型类型的 切片问题, 由于我电脑上装的是Python 3.x, 在 range() 这个内建函数上和泪珠的2.x 有些许差别:2.x: range(start : stop : step) 生成 一个 从start开始(包含start)到stop结束(不包含stop),步长为 step 的列表(下称:list类型)3.x range(start : stop : step) 生成一个 序列生成器(range 类型),在这里,range自成一种类型了, 不过 start, stop, step 的意义是一样的。以上是两个版本Python的区别,扯开一句,Python 3.x 和2.x 的不兼容在前几年3.x 刚推出是 短时间内看对Python语言是一种伤害, 一种分裂。 但是站在2016的开端来看,各种常用的库都已经支持了3.x, 且3.x版本比2.x 版本在 各个方面都高级和合理了很多,所以建议初学者都从3.x 开始学习Python. range 的在3.x的改进就能看出: 在2.x 中产生一个list , 而3.x 中产生的是一个 生成器,在内存优化上更高一层。 好了扯远了, 写这些主要是为了说明 用3.x 演示代码和2.x 的区别: 在3.x 中 如果想保证 开头声明的L 是list ,如下:L = list(range(1,101))我们具体解释下 range(start : stop : step) 中三个暂称为 参数的作用和用法,以及一些小技巧:1, start: 如上所说, 为列表(3.x 为 range 类型)的开始, 切片或者声明时 可以省略,省略默认 start为0。2, stop: 列表的结束(不包含), 切片时可以省略,省略默认为列表的最后。3, step: 为步长,即 列表中元素之间的差, 切片或者声明时 可以省略, 默认为1。下面就range函数的各种省略的组合用代码 一一说明:>>> list(range(3)) ## 声明时 省略 start 和 step
[0, 1, 2]
>>> list(range(1,3)) ## 声明时 省略 step
[1, 2]
>>> list(range(1,11,2)) ## 步长为2
[1, 3, 5, 7, 9]
>>> list(range(11,1,-2)) ## 步长为负数
[11, 9, 7, 5, 3] 列表切片的start stop step 和 range函数 差不多:>>> L= list(range(1,21)) ##声明 列表 L
>>> print (L)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> print(L[2:6]) ## 省略 step (步长), step默认为1
[3, 4, 5, 6]
>>> print(L[2:10:2]) ## 显式声明 step 为2
[3, 5, 7, 9]
>>> print(L[10:2:-2]) ## 显式声明 step 为 -2
[11, 9, 7, 5]
>>> print(L[:19]) ## 省略 start, start 默认为0; 省略步长 step, 默认为1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> print(L[0::1]) ## 省略 stop , 默认到列表的结尾。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]应该还有更多的写法, 3个位置: start, stop, step ; 且它们均可以为 正数 或负数。 题主可以自己试试。