Python:枚举具有负索引的切片

问题描述

我想迭代并枚举列表的最后几项:

a = [1,2,3,4,5]

[c for c,i in enumerate(a[-3:],-3)] 给出: [-3,-2,-1]

[c for c,i in enumerate(list(a[-3:]))] 给出: [0,1,2]

[c for c,i in islice(enumerate(a),-5)] 加注:

ValueError: Indices for islice() must be None or an integer: 0 <= x <= sys.maxsize.

那么我如何被枚举: [3,5] 使用负索引 ?

示例:

for i,j in enumerate(...): print(i,j) 其中 ... 包含一个只有负索引的切片表达式应该给出:

0 3
1 4
2 5

解决方法

a = [1,2,3,4,5]

print ([c for c in a[-3:]])

输出:

[3,5]

使用枚举:

print ([(i,j)[1] for i,j in enumerate(a[-3:])])
,

[c for c,i in enumerate(a[-3:],-3)] 给出:[-3,-2,-1]

你应该得到我不是 c

[i for c,-3)] 这会给你 [3,5]