说我有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])),....
代替..
答案 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 ]