如何使用枚举向后计数?

时间:2018-05-17 01:23:44

标签: python python-3.x

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

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

0, a
1, b
2, c

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

2, a
1, b
0, c

8 个答案:

答案 0 :(得分:2)

试试这个:

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

输出:

2 a
1 b
0 c

答案 1 :(得分:1)

我会首先尝试制作一个反向列表,然后你可以使用enumerate()

letters = ['a', 'b', 'c']
letters.reverse()
for i, letter in enumerate(letters)

答案 2 :(得分:1)

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

#include "include/startpage.h"
#include <iostream>
#include <conio.h>
#include "include/concol.h"
#include "pch.h"
#include <iostream>
using namespace std;


int main()
{
    startpage(); 
}

```

以下是上述代码段的输出

Error code: C3861: 'startpage' identifier not found

以下代码段中发生的事情是

  • 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)}") 的{​​{1}} arg被赋予负值。
  • 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 始终向前迈进了一步。
  • 最后,我们在enumerate上使用start来找到绝对值,该值始终为正。

答案 3 :(得分:0)

tl; dr:size - index - 1

我假设您要问的问题是,当项目相同时,您是否可以反转索引,例如,当a实际上具有索引时,a的排序编号为2 0.

要计算这一点,请考虑数组或列表中的每个元素都希望项目的索引具有相同的&#34;距离&#34; (索引方面)从集合的末尾。计算这个给你大小 - 索引。

然而,许多编程语言启动索引为0的数组。因此,我们需要减去1才能使索引正确对应。考虑我们的最后一个元素,索引大小为1.在我们原始的等式中,我们得到size - (size - 1),它等于size - size + 1,等于1.因此,我们需要减去1.

最终等式(对于每个元素):size - index - 1

答案 4 :(得分:0)

zip函数为两个参数列表创建了元素对的列表。

list(zip([i for i in range(len(letters))][::-1], letters))

答案 5 :(得分:0)

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

取自类似问题的回答:Traverse a list in reverse order in Python

答案 6 :(得分:0)

试试这个:

number,number plus 2,number times 2
country1,dest1,0
country3,dest3,1
country2,dest2,2
country5,dest5,3
country4,dest4,4

答案 7 :(得分:0)

我们可以定义效用函数(在 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)