基于索引的列表列表中的子集项目

时间:2018-06-30 16:48:09

标签: python python-3.x

我有一个类似以下的列表:

test = [['hi', 'hi2'], ['bye', 'bye2', 'by3']]

,并希望基于其中具有所需索引的另一个列表列表对其进行子集处理:

indices = [[0], [0, 2]] 

对于常规值列表和索引列表,很容易做到:

[1d_list[i] for i in 1d_indices]

因此,我对此列表列表进行了类似的尝试,但是它不起作用

[[[t[i] for i in ii] for t in test] for ii in indices]

请问出什么问题了吗?

此部分所需的输出是

test_out = [['hi'], ['bye', 'by3']]

此外,如何选择indices中的确切逆数?

例如,所需的输出将是:

test_out_2 = [['hi2'], ['bye2']]

谢谢! 杰克

1 个答案:

答案 0 :(得分:2)

您可以将zipenumerate一起使用:

test = [['hi', 'hi2'], ['bye', 'bye2', 'by3']]
indices = [[0], [0, 2]] 
new_test = [[a for i, a in enumerate(c) if i in b] for c, b in zip(test, indices)]

输出:

[['hi'], ['bye', 'by3']]