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

倒序切片的一个例子 ,没有理解

L=['Adam','Lisa','Bart','Paul']

>>>L[-4:-1:2]                         ------->这个没理解

正在回答

2 回答

Adam, Lisa, Bart, Paul 用倒数表示的话其分别对应的序号为-4,-3,-2,-1。所以,L[-4:-1:2]的意思是从从Adam开始到Paul,每两个取一个(即最后那个“:2”的意思),或隔一个取一个。如此其结果应该为Adam,Bart。

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

没有理由退缩 提问者

好的,我懂啦,谢谢
2016-04-07 回复 有任何疑惑可以回复我~
#2

没有理由退缩 提问者

非常感谢!
2016-04-20 回复 有任何疑惑可以回复我~
#3

罗格里格斯

那中间的-1 没有起作用呗
2016-11-17 回复 有任何疑惑可以回复我~

粘贴自己的以前在猿问里的回答给 题主:

————————————————————分隔线————————————————————————


楼主问的是列表,及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 ; 且它们均可以为 正数 或负数。 题主可以自己试试。


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

举报

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

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

进入课程

倒序切片的一个例子 ,没有理解

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