python - 如何使用 enumerate 向后计数?

标签 python python-3.x

letters = ['a', 'b', 'c']

假设这是我的 list 。其中 for i, letter in enumerate(letters) 将是:

0, a
1, b
2, c

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

2, a
1, b
0, c

最佳答案

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

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)}")

这是上述代码段的输出:

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

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

  • enumeratestart arg 被赋予负值。
  • enumerate 总是向前迈出一步。
  • 最后,我们在 idx 上使用 abs 来求绝对值,它总是正数。
  • 如果您想从零开始编制索引,请使用 -len(items) + 1 修复逐一错误

关于python - 如何使用 enumerate 向后计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382040/

相关文章:

python - 扩展 Django 用户模型(使其在 request.user 中工作),Django 1.2.3

linux - 从 IRT 可执行文件中读取数据

python - 导入错误: cannot import name 'ft2font' from partially initialized module 'matplotlib'

python - 从大字典中弹出 N 项的最快方法

python - 使用 pysftp 连接到 SFTP 服务器时出现 "Failed to load HostKeys"警告

Javascript 按钮单击在 selenium webdriver 中不起作用

python - 使用 NLTK 快速删除命名实体

python - Python 列表中唯一项的数量

python - 为什么OpenCV分解的单应性平移矩阵有三个值?

python - 是否可以在jupyter笔记本中将 `print`输出显示为LaTeX?