Python列表从负索引到正索引

时间:2019-09-08 01:07:11

标签: python

我正在尝试从列表中建立索引。我知道负索引是指从列表末尾开始倒数的项目。我的问题是,即使看起来很直观,为什么也似乎无法在从负索引到正索引的范围内建立索引。

例如,foo [-1],foo [0],foo [1]都是从列表foo索引的有效方法。为什么foo [-1:1]不起作用? 另外,由于foo [-1:]选择了最后一个元素,为什么foo [-1:0]不能等效工作?

foo = ['a','b','c']
print(foo[-1])
print(foo[0])
print(foo[1])
print(foo[-1:1])

可以直接从-1、0和1进行索引,但不能通过-1:1进行索引。

3 个答案:

答案 0 :(得分:1)

你可以做

foo[-1:1:-1]

输出:['c']

切片使用foo[start:end:step]

您可以执行foo[::-1]来反转列表等。

答案 1 :(得分:0)

据我所知,您正在寻找这样的东西:

a = [10, 20, 30, 40]
a[-1:] + a[:1]  # this is [40, 10]

我想你被否决了,因为这是一个模糊的问题。一个“为什么?”类型问题可能很难回答-这可能是工程决策。您可以自动使其表现为这种方式,但是在查询b > c时需要检查a[b:c]是否正确(请记住,示例中的-1实际上是len(a) - 1 )。考虑到您将使用类似情况的情况以及支票的成本,他们可能选择不实施类似情况。

答案 2 :(得分:0)

这将打印foo

中的所有元素
print(foo[-len(foo):])

['a', 'b', 'c']

这将打印foo

中的最后两个元素
print(foo[-2:])

['b', 'c']

这就是它的工作原理