【发布时间】:2017-04-15 05:38:06
【问题描述】:
我想在the post 上评论已接受的同名答案,但我太绿了。
这个答案,“a[x:y:z] 给出的结果与 a[slice(x,y,z)] 相同”,在我的尝试中并没有被证明是正确的,所以我正在寻求对slice() 和切片表示法之间的区别。
我有一个串行协议,其消息正文如下:Q0134CA24B。
如果我想收集该协议的元素,这样做会非常好:
>>> str = 'Q0134CA24B'
>>> cmd = slice(0,1)
>>> str[cmd]
'Q'
>>> cs = slice(-2,0)
>>> str[cs]
''
>>> cs
slice(-2, 0, None)
>>> str[cs]
''
>>> str[-2:None:None]
'4B'
那么,我做错了什么?与切片表示法相比,切片()是否受到限制?这对我来说非常有用,因为我经常在串行协议中工作,并且使用 slice() 定义字符字段将是一种传递这种表示的 Python 方式。
【问题讨论】:
-
我很难理解这个问题。声明“a[x:y:z] 给出与 a[slice(x,y,z)] 相同的结果”,在我的尝试中没有被证明是正确的”——我没有看到你演示的任何尝试这两者之间的不一致...
-
您的所有测试都没有显示
a[x:y:z]和a[slice(x, y, z)]之间的差异。 -
天哪,那个骗子也有完全相同的标题......这几乎就像你可以谷歌一样。
-
你为什么期望
slice(-2, 0)表现得像[-2:]?[-2:]等价于slice(-2, None) -
@SterlingArcher:发问者实际上确实找到了那个帖子。它链接在这个问题的第一行。