我收到了这个练习:
编写一个函数
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)
如果您实际上可以索引,只需通过索引添加值:
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)