负面清单指数?

Daw*_*ood 93 python list

可能重复:
解释切片表示法

我正在尝试理解以下代码:

# node list
n = []
for i in xrange(1, numnodes + 1):
    tmp = session.newobject();
    n.append(tmp)
link(n[0], n[-1])
Run Code Online (Sandbox Code Playgroud)

具体来说,我不明白索引-1所指的是什么.如果索引0引用第一个元素,那么什么-1引用?

Too*_*mai 168

负数表示您从右侧而不是左侧计数.所以,list[-1]指的是最后一个元素,list[-2]是倒数第二个,依此类推.

  • 但是,有一点需要注意:如果尝试切片表示法,行为会略有不同.如果在这种情况下使用-1,它将从最后一个返回一个元素.>>> a = [1,2,3,4,5] >>> a [-1] 5 >>> a [: - 1] [1,2,3,4] (13认同)
  • @abought虽然这不是正常的行为吗?如果我说'a [4]`,它会返回5,但是`a [:4]`返回[1,2,3,4] (6认同)
  • @abought,这仅仅是因为切片符号*排除*冒号后指定索引的元素!“-1”仍然指列表中的最后一个值。 (4认同)

Rus*_*ove 9

列表索引-x表示列表末尾的第x项,因此n[-1]表示列表中的最后一项n.任何好的Python教程都应该告诉你这个.

这是一个不同寻常的惯例,除了Python之外几乎没有其他语言采用,但它非常有用; 在任何其他语言中,您将花费大量时间n[n.length-1]来访问列表的最后一项.

  • 虽然并非所有语言都能够遵循此设计,但确实如此.在C中,`n [-1]`字面意思是"n [0]"之前的元素,如果n指向一个数组就很好 - 即使它通常是一个错误.[http://dlang.org/d-array-article.html](Slicing in D)是一种有趣的内存安全切片,包括来自右边的符号. (2认同)