在下面的代码中,我使用回溯打印所有子集。我正在打印res_list。
res_list = [[], [13], [12], [12, 13]]
当我将subset_list
的一个元素接一个元素复制到列表中并附加到res_list
(第4行(时
res_list = [[], [], [], []]
当我将CCD_ 3直接附加到CCD_。(3号线(
我不明白为什么我需要逐个复制subset_list
的元素,然后附加到res_list
,而不是直接附加subset_list
。
def print_subsets(arr, len_arr, cur_index, sub_set_list, res_list):
if cur_index == len_arr:
# res_list.append(sub_set_list)
res_list.append([x for x in sub_set_list])
return
# Include the element into the array list and pass to the next function call
print_subsets(arr, len_arr, cur_index + 1, sub_set_list, res_list)
sub_set_list.append(arr[cur_index])
print_subsets(arr, len_arr, cur_index + 1, sub_set_list, res_list)
sub_set_list.remove(arr[cur_index])
if __name__ == "__main__":
res = []
sub_list = []
A = [12, 13]
print_subsets(A, len(A), 0, sub_list, res)
print(res)
subset_list.copy()
和subset_list[:]
都能工作。
直接附加了subset_list
的参考文献。
为了避免它,创建一个新的列表并附加到res_list
。