Python 将列表中的项映射到列表列表
我正在考虑一种有效的方法,将列表中的名称映射到列表中的分组索引项 假设我有这个分组:Python 将列表中的项映射到列表列表,python,for-loop,iteration,Python,For Loop,Iteration,我正在考虑一种有效的方法,将列表中的名称映射到列表中的分组索引项 假设我有这个分组: g = [[0,1],[2]] 我还有以下清单: names = ["canine", "dog", "feline"] 我想根据索引将映射名称返回到分组: result = [["canine","dog"], ["feline"]] 我不太清楚如何做到这一点,甚至不知道如何有效地做到这一点。这是我到目前为止得到的,但它不起作用 final = [] for j in range(len(names))
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)
任何提示都将不胜感激。我认为您可能希望循环使用g而不是名称。并没有理由对名称进行循环,因为您将使用值g对其进行索引。在这种情况下,简单的列表理解可能更适合:
[[names[i] for i in sublist] for sublist in g]
我想你可能想循环g而不是名字。并没有理由对名称进行循环,因为您将使用值g对其进行索引。在这种情况下,简单的列表理解可能更适合:
[[names[i] for i in sublist] for sublist in g]
您还可以将map与lambda一起使用,以实现最终输出:
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']]
您还可以将map与lambda一起使用,以实现最终输出:
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']]
如果要对连续元素进行切片,则使用g=[2,1]表示子列表的长度更为合理。如果要对连续元素进行切片,则使用g=[2,1]表示子列表的长度更为合理。