枚举函数如何工作?

时间:2015-03-31 12:41:20

标签: python enumeration enumerate

我应该做以下事情:

  

定义一个函数my_enumerate(items),其行为方式与内置enumerate函数类似。它应该返回一对(i, item)对的列表,其中item是列表i的{​​{1}}项,0来源(参见下面的示例) 。检查测试用例以了解该功能应如何工作。您的函数不能调用Python的内置items函数。

     

示例

     

输入:

enumerate
     

输出:

ans = my_enumerate([10, 20, 30])
print(ans)

2 个答案:

答案 0 :(得分:2)

enumerate做什么?尝试用英语表达,它可以帮助您理解如何编写必要的代码。如果没有,那么在代码中学习英语语言描述的做法将是有用的。

描述enumerate的一种方式是说它遍历列表中的每个项目,并且对于输入列表中的每个项目,它在输入列表和项目中生成一对项目的索引。

所以我们知道我们需要遍历列表:

for item in input_list:
    pass

我们需要跟踪当前项目的索引。:

index = 0
for item in input_list:
    index += 1
嗯,还有更好的方法:

for index in range(len(input_list)):
    pass

现在生成对:

for index in range(len(input_list)):
    pair = index, input_list[index]

您还需要在某处存储这些对:

def my_enumerate(input_list):
    output_list = []
    for index in range(len(input_list)):
        pair = index, input_list[index]
        output_list.append(pair)
    return output_list

是否有其他方法可以编写产生相同输出的代码?是。这是编写此功能的最佳方式吗?不是由一个长镜头。这个练习应该帮助你的是将你的想法变成代码,当你获得更多的经验时,你可以一次组合多个步骤,并开始使用更复杂的编程概念。

答案 1 :(得分:1)

使用itertools.countzip

from itertools import count

def my_enumerate(values):
    return list(zip(count(), values))