列表"循环回来"以这样的方式?

时间:2015-11-02 21:52:14

标签: python list python-3.x indexing slice

请考虑以下代码:

def mystr(L):
   print(L[0])
   return L[-1]

mystery_list = [2,5]
print(mystr(mystery_list))

Output (stdout):
2
5

我认为Python,一旦进入负区域,开始向后计数?因此[-1]是最后一个元素,[ - 2]是最后一个元素。我这是对的吗?

这种行为是否存在于Python的其他地方(即:字符串)?

如果我创建此列表的副本并且我从负数开始为0 - 列表是否会被反转?即newList = [-1:0]< - 这会反转列表吗?

感谢。

2 个答案:

答案 0 :(得分:1)

是的,使用负数编制索引是相对于列表末尾的。这适用于python all python sequences(以及许多其他旨在表现得像序列的对象)。

如果切片定义为sequence[i:j],则根据链接文档

  

如果ij为负数,则索引相对于字符串的结尾:len(s) + ilen(s) + j被替换。但请注意,-0仍为0

序列的一些例子是:

  • 字符串
  • 的unicode
  • 元组
  • 列表
  • x范围
  • 字节组

答案 1 :(得分:0)

是的,你在这个假设中是正确的。字符串,元组,列表或任何序列都符合此行为并支持负索引。例如:

Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
>>> a = [1, 2, 3, 4, 5]
>>> b = (1, 2, 3, 4, 5)
>>> c = "12345"
>>> print(a[-1])
5
>>> print(b[-1])
5
>>> print(c[-1])
5