Negative list index?
Possible Duplicate:
Explain slice notation
我试图理解以下代码:
1 2 3 4 5 6
| # node list
n = []
for i in xrange(1, numnodes + 1):
tmp = session.newobject();
n.append(tmp)
link(n[0], n[-1]) |
具体来说,我不理解索引-1指的是什么。如果索引0引用第一个元素,那么-1引用什么?
- 我认为这个问题最终涵盖了与Python切片表示法良好的初级读物相同的基础。
- 我想是的……谢谢!
负数意味着您从右开始而不是从左开始计数。所以,list[-1]是最后一个元素,list[-2]是第二个元素,以此类推。
- 但是,有一个警告:如果您尝试使用切片表示法,行为会略有不同。如果在这种情况下使用-1,它将从最后一个元素返回一个元素。>>>A=[1,2,3,4,5]>>>A[-1]5>>A[:-1][1,2,3,4]
- @但是,这不是正常的行为吗?如果我说a[4],它会返回5,但a[:4]返回[1,2,3,4]
-x的列表索引是指列表末尾的xth项,所以n[-1]是列表n中的最后一项。任何优秀的Python教程都应该告诉您这一点。
除了python之外,很少有其他语言采用这种特殊的约定,但它非常有用;在任何其他语言中,您将花费大量时间编写n[n.length-1]来访问列表的最后一项。
- 是的,虽然不是所有的语言都能遵循这种设计。在C语言中,n[-1]字面上是指n[0]之前的元素,如果n指向一个数组,即使它更通常是一个bug,也可以。[dlang.org/d-array-article.html](在d中切片)是一个有趣的采用本机语言的内存安全切片,包括正确的符号。
- python直接从perl:stackoverflow.com/questions/15911115/…获得了这个特性。据我所知,拉里自己为珀尔想出了这个主意,但他可能是从别的地方得到的。