映射列表模式,其作用类似于枚举

时间:2017-03-25 22:01:22

标签: python

所以我创建的函数的行为与内置的枚举函数类似,但返回元组列表(索引,值)。

这是我的功能:

def my_enumerate(items):
    """return a list of tuples (i, item) where item is the ith item, 
    with 0 origin, of the list items"""
    result = []
    for i in items:
        tuples = ((items.index(i)), i)
        result.append(tuples)
    return result

因此,在使用以下内容进行测试时:

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

它将返回:

[(0, 10), (1, 20), (2, 30)]

所以它确实有效,但在测试时:

ans = my_enumerate(['x', 'x', 'x'])
print(ans)

它返回:

[(0, 'x'), (0, 'x'), (0, 'x')]

它应该在哪里:

[(0, 'x'), (1, 'x'), (2, 'x')]

我怎样才能得到它以便它返回呢?

1 个答案:

答案 0 :(得分:1)

问题是items.index(i)。如果同一对象有多个,index函数将返回第一个索引。由于您有3个'x',因此它将始终返回第一个'x'的索引。

def my_enumerate(items):
    """
    return a list of tuples (i, item) where item is the ith item, with 0 origin, of the list items
    """

    result = []
    for index in range(len(items)):
        tuples = (index, items[index])
        result.append(tuples)

    return result