如何使用枚举向后计数?

Cra*_*aig 6 python python-3.x

letters = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

假设这是我的清单.哪里for i, letter in enumerate(letters)会:

0, a
1, b
2, c
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它向后枚举,如:

2, a
1, b
0, c
Run Code Online (Sandbox Code Playgroud)

rud*_*vdr 15

这是一个很好的解决方案并且可以完美运行:

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for idx, item in enumerate(items, start=-len(items)):
    print(f"reverse index for {item}: {abs(idx)}")
Run Code Online (Sandbox Code Playgroud)

这是上述代码段的输出

reverse index for a: 7
reverse index for b: 6
reverse index for c: 5
reverse index for d: 4
reverse index for e: 3
reverse index for f: 2
reverse index for g: 1
Run Code Online (Sandbox Code Playgroud)

这是上面片段中发生的事情:

  • enumeratestartarg 被赋予一个负值。
  • enumerate 总是向前迈出一步。
  • 最后我们使用absonidx来找到绝对值,它总是正的。
  • 如果您想从零开始索引,则使用-len(items) + 1来修复一对一错误

  • 这比公认的答案更容易理解和现实。 (2认同)

小智 4

尝试这个:

letters = ['a', 'b', 'c']
for i, letter in reversed(list(enumerate(reversed(letters)))):
    print(i, letter)
Run Code Online (Sandbox Code Playgroud)

输出:

2 a
1 b
0 c
Run Code Online (Sandbox Code Playgroud)