Itertools 结合索引

Itertools combination with index

假设我有 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])),....

相反..

你快到了。只需将您的 clist 转换为所需的格式。 itertools.combinations( enumerate(dlist), 2) 将 return 格式为 ((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 ]