Python 如何使用enumerate倒计时?
假设这是我的名单。其中,对于i,枚举(字母)中的字母应为:Python 如何使用enumerate倒计时?,python,python-3.x,Python,Python 3.x,假设这是我的名单。其中,对于i,枚举(字母)中的字母应为: letters = ['a', 'b', 'c'] 我如何使其反向枚举,如: 0, a 1, b 2, c 试试这个: 2, a 1, b 0, c 2 a 1 b 0 c 输出: letters = ['a', 'b', 'c'] for i, letter in reversed(list(enumerate(reversed(letters)))): print(i, letter) tl;dr:size-ind
letters = ['a', 'b', 'c']
我如何使其反向枚举,如:
0, a
1, b
2, c
试试这个:
2, a
1, b
0, c
2 a
1 b
0 c
输出:
letters = ['a', 'b', 'c']
for i, letter in reversed(list(enumerate(reversed(letters)))):
print(i, letter)
tl;dr:size-index-1 我假设您要问的问题是,当项目相同时,是否可以反转索引,例如,a的顺序号为2,而实际上索引为0
计算此,考虑数组或列表中的每个元素都希望从集合末尾具有具有相同“距离”(索引)的项的索引。计算它可以得到大小索引
但是,许多编程语言以索引为0的数组开始。因此,我们需要减去1,以使指数正确对应。考虑我们的最后一个元素,大小为1的索引。在我们的原始方程中,我们得到size-(size-1),它等于size-size+1,它等于1。因此,我们需要减去1最后一个等式(对于每个元素):size-index-1我会先尝试制作一个反向列表,然后您可以使用
enumerate()
zip函数为两个参数列表创建元素对列表
letters = ['a', 'b', 'c']
letters.reverse()
for i, letter in enumerate(letters)
印刷品
letters = ['a', 'b', 'c']
for i, letter in zip(range(len(letters)-1, -1, -1), letters):
print(i, letter)
摘自一个类似问题的答案:试试这个:
2, a
1, b
0, c
2 a
1 b
0 c
我们可以定义效用函数(在Python3.3+中) 并且像这样直接使用它
from itertools import count
def enumerate_ext(iterable, start=0, step=1):
indices = count(start, step)
yield from zip(indices, iterable)
或写助手
letters = ['a', 'b', 'c']
for index, letter in enumerate_ext(letters,
start=len(letters) - 1,
step=-1):
print(index, letter)
像这样使用它
def reverse_enumerate(sequence):
yield from enumerate_ext(sequence,
start=len(sequence) - 1,
step=-1)
这是一个很好的解决方案,效果非常理想:
for index, letter in reverse_enumerate(letters):
print(index, letter)
以下是上述代码段的输出:
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)}")
以下是上述片段中发生的情况:
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)}")
的enumerate
arg被赋予负值李>start
总是向前迈出一步李>枚举
- 最后,我们使用
上的idx
来查找绝对值,它总是正值abs
对于i,字母倒过来(列表(枚举(倒过来(字母)))
@davedwards链接答案不能准确输出OP想要的内容。@VivekPabani,这是真的!谢谢Vivek;-)您可以编写自己的函数enumerate
在python中实际上只有4行代码。稍微调整一下就可以了-这比公认的答案更容易理解和现实。我会使用-1*idx
而不是调用abs()
IMO这比负索引要好。
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