免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2810 | 回复: 6
打印 上一主题 下一主题

a[-1:-2:-1]这个什么意思 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-02 23:34 |只看该作者 |倒序浏览
RT
a=[2,3,1]
print a[-1:-2:-1]
上列结果为什么会是 1 的呢?

论坛徽章:
0
2 [报告]
发表于 2008-04-03 10:11 |只看该作者
各位高手 在线等答案

论坛徽章:
0
3 [报告]
发表于 2008-04-03 10:52 |只看该作者
a[-1:-2:-1]   # [-1:-2] 最後一個到尾2 (尾2不計), 最後一個 -1 就是從後面開始.....

  1. >>a = [3,2,1]
  2. >>print a[::-1]
  3. [1,2,3]
  4. >>print a[::-2]
  5. [1,3]
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-04-03 11:32 |只看该作者
没看明白,是前两个切片定义了开始地址?
(A:B):C这样理解?

论坛徽章:
0
5 [报告]
发表于 2008-04-04 12:23 |只看该作者
原帖由 edwardhey 于 2008-4-2 23:34 发表
RT
a=[2,3,1]
print a[-1:-2:-1]上列结果为什么会是 1 的呢?



a[-1:-2:-1] 中index为负数时,从list末尾向前看
a[-1:-2]是取a的最后两位的slice,设b=a[-1:-2] ,   b = [3,1]
b[-1] 就是[3,1]的最后一个元素,也就是1

论坛徽章:
0
6 [报告]
发表于 2008-04-04 12:46 |只看该作者

  1. a = [2,3,1]
  2. a[-1:-2]是取a的最后两位的slice,设b=a[-1:-2] ,   b = [3,1]

  3. # this one is incorrect....
  4. # b = a[-1:-2] , b will never include the second element from the last
  5. # so b is [1], not [3,1]
复制代码


a[::-1]   #just remember [::-1] is equal to reverse() function

论坛徽章:
0
7 [报告]
发表于 2008-04-04 14:43 |只看该作者
原帖由 eookoo 于 2008-4-4 12:46 发表

a = [2,3,1]
a[-1:-2]是取a的最后两位的slice,设b=a[-1:-2] ,   b = [3,1]

# this one is incorrect....
# b = a[-1:-2] , b will never include the second element from the last
# so b is [1], no ...



是的,eookoo是正确的,thanks
我说错了,太想当然,没有去确认>_< 以后会注意的

s[i:j:k]  是slice of s from i to j with step k   (而不是按照i,j,k 依次执行slice)
所以, 通过 b=[-1:-2] ,b[-1]这个顺序计算的想法,是完全不成立的

不过,eookoo提到b=a[-1:-2] 得到[1] , 似乎也不对,如果计算b=a[-1:-2] is [] ,如果计算a[-1:-2:-1],应该不用计算 b=a[-1:-2]这个临时值
也可能我哪里理解有偏差:wink:  讨论一下,挺有意思的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP