将列表中的项目映射到列表列表

时间:2018-12-17 03:46:35

标签: python for-loop iteration

我正在考虑一种将列表中的名称映射到列表中的分组索引项的有效方法。

比方说我有这个分组:

g = [[0,1],[2]]

我也有此列表:

names = ["canine", "dog", "feline"]

我想根据索引将映射的名称返回到分组:

result = [["canine","dog"], ["feline"]]

我不确定如何做到这一点,甚至不确定如何有效做到。到目前为止,这是我的东西,但是没用。

final = []
for j in range(len(names)):
    for item in g:
        for inner in item:
            res = []
            if inner == j:
                res.append(names[inner])
        final.append(res)
print(final)

任何提示将不胜感激。

2 个答案:

答案 0 :(得分:3)

我认为您可能想遍历 cmap=colormap(jet(10)); close; for pp = 1:10 numelements = randi(10e4,1,1); data = rand(numelements,1)*2; figure(1); h1 = probplot('lognormal',data,'noref'); set(h1(1),'marker','+','color',cmap(pp,:),'markersize',10); hold on; end 而不是g。没有理由循环访问names,因为您将使用值names对其进行索引。在那种情况下,似乎简单的列表理解可能更适合此:

g

答案 1 :(得分:1)

您还可以将maplambda一起使用以实现最终输出:

g = [[0, 1], [2]]

names = ["canine", "dog", "feline"]

result = [map(lambda i: names[i], sub_list) for sub_list in g]
# Output: [['canine', 'dog'], ['feline']]