【问题标题】:Python: enumerate a slice with negative indicesPython:枚举带有负索引的切片
【发布时间】:2021-04-18 02:39:45
【问题描述】:

我想遍历并枚举列表的最后几项:

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, 4, 5] 使用负索引 ?

示例:

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

0 3
1 4
2 5

【问题讨论】:

  • 我认为是enumerate(a[-3:], 3),但不确定您为什么会忽略这一点,所以也许我误解了这个问题。
  • 是的,我只想使用负索引。
  • 我不确定我是否了解您要查找的内容。您能否编辑问题以包含您想要的输出?
  • a 中使用字符串而不是数字可能会更清楚。我还是不明白你在这里的意思。你想要enumerate(a, -len(a)) 吗?

标签: python loops slice itertools enumeration


【解决方案1】:
a = [1,2,3,4,5]

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

输出:

[3,4,5]

使用枚举:

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

【讨论】:

  • 这很清楚,但我的问题是如何枚举这个切片。
  • 您要专门使用枚举。没有比这更多的目标?查看我的编辑。
  • 为什么会有人这样做?和a[-3:]一样。
  • OP 想要的。所以OP是对的。我仍然承认;)
【解决方案2】:

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

你应该得到 i 而不是 c

[i for c, i in enumerate(a[-3:], -3)] 这会给你[3, 4, 5]

【讨论】:

  • c 是索引,i 是数组中的值。
猜你喜欢
  • 2014-06-03
  • 2015-12-17
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2022-11-10
  • 2018-08-17
  • 1970-01-01
  • 2016-12-08
相关资源
最近更新 更多