使用 lambda 编写枚举函数

H_m*_*eir 5 python lambda

我收到了这个练习:

编写一个函数enumerate,该函数接受一个列表并返回一个元组列表,其中包含(index,item)列表中的每个项目

我的问题是我无法将索引和值插入一个循环或循环组合中for。这是我设法制作的代码:

a = ["a", "b", "c","a","b","c"]
index = 0
for i in a:
    print (index,i)
    index+=1
Run Code Online (Sandbox Code Playgroud)

这大致是我想要生成的代码(必须在一行上):

my_enumerate = lambda x :[(t) for t in x )]
print list(my_enumerate(range(4)))
Run Code Online (Sandbox Code Playgroud)

我怎样才能把所有lambda内容都写成一行来返回(value, index)?输出应如下所示:

[(0, "a"), (1, "b"), (2, "c")]
Run Code Online (Sandbox Code Playgroud)

Pad*_*ham 5

如果您实际上可以索引,只需通过索引添加值:

my_enumerate = lambda x :[(t, x[t]) for t in range(len(x))]
print list(my_enumerate(a))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'a'), (4, 'b'), (5, 'c')]
Run Code Online (Sandbox Code Playgroud)

如果不使用 zip 并将范围放入 lambda 中:

my_enumerate = lambda x: zip(range(len(x), x))
print list(my_enumerate(a))
Run Code Online (Sandbox Code Playgroud)