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