我正在尝试从列表中建立索引。我知道负索引是指从列表末尾开始倒数的项目。我的问题是,即使看起来很直观,为什么也似乎无法在从负索引到正索引的范围内建立索引。
例如,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进行索引。
答案 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']
这就是它的工作原理