Python 映射而不是for循环

Python 映射而不是for循环,python,for-loop,map-function,Python,For Loop,Map Function,我有一个for循环: for i in range(len(k_poss)): k_poss[i][0] = ' '.join(k_poss[i][0]) 是否可以使用映射功能来代替此功能?我知道可能是这样的 map(lambda x: ' '.join(x), k_poss) 但是我如何在地图中找到我想要的索引呢?你可以在k_poss上循环, 在一个对象的长度范围内循环被认为是非Pythonic的 for k in k_poss: k[0] = ' '.join(k[0]

我有一个for循环:

for i in range(len(k_poss)):
    k_poss[i][0] = ' '.join(k_poss[i][0])
是否可以使用映射功能来代替此功能?我知道可能是这样的

map(lambda x: ' '.join(x), k_poss)

但是我如何在地图中找到我想要的索引呢?

你可以在k_poss上循环, 在一个对象的长度范围内循环被认为是非Pythonic的

for k in k_poss:
     k[0] = ' '.join(k[0])
这将使事情更具可读性

既然您提出了要求,map也会起作用,但实际上不推荐使用

见@Jab的例子

k_poss = list(map(lambda x: [' '.join(x[0])] + x[1:], iter(k_poss)))

如果你真的想使用map,从评论部分可以看出,它比我在这里的尝试要好…

你不太可能用一行重写这两行,并保持可读性。那么何必麻烦呢?知道列表的样子是很有帮助的。
k_poss
中有非零列需要保留?你在地图中加入所有的
x
而不是
x[0]
,并返回一个字符串而不是一个列表取决于k_poss,也许更安全的做法是将其更改为iter(k_poss)。地图仍然不正确,这样,每次
x
都会丢失数据。不要用地图来做这个。只要使用循环。如果你想要一行,那就做一行。但这只是为了让地图更有效你正在做另一个循环作为理解。这只是效率低下。此外,您还缺少一个右括号,如果使用该图,它应该是
k_poss=list(map(lambda x:[''.join(x[0])]+x[1:],iter(k_poss))
。在这一点上,我说这是太多的工作和可读性和效率的损失,在这一点上。