Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用enumerate倒计时?_Python_Python 3.x - Fatal编程技术网

Python 如何使用enumerate倒计时?

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

假设这是我的名单。其中,对于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-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
    start
    arg被赋予负值
  • 枚举
    总是向前迈出一步
  • 最后,我们使用
    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