Itertools与索引相结合

时间:2016-07-19 22:39:07

标签: python list indexing itertools

说我有dlist=[[1, 2], [3, 4], [5, 6], [7, 8],[9,10]]。我希望将两个列表和它们的索引组合在一起。

所需的输出

[[0,1],[[1,2],[3,4]]], [[0,2],[[1,2],[5,6]]] and so on..

以下代码创建

clist.append([list(itertools.combinations(list(enumerate(dlist)), 2))])

[((0, [1, 2]), (1, [3, 4])), ((0, [1, 2]), (2, [5, 6])),....

代替..

1 个答案:

答案 0 :(得分:3)

你几乎就在那里。只需将clist转换为所需格式即可。 itertools.combinations( enumerate(dlist), 2)将返回格式为((index_number_of_sub_arr1, sub_arr1), (index_number_of_sub_arr2, sub_arr2))的组合的迭代器。 您只需要遍历迭代器,将其转换为格式[[index_number_of_sub_arr1, index_number_of_sub_arr2],[sub_arr1, sub_arr2]]

# this is like your current clist (iterator)
tmp_list = itertools.combinations( enumerate(dlist), 2) 

# convertion to desired format
clist = [ [[idx1, idx2], [arr1,arr2]] for ((idx1, arr1),(idx2,arr2)) in tmp_list ]