为什么我应该逐个元素复制数组元素,然后追加到列表中,而不是直接追加



在下面的代码中,我使用回溯打印所有子集。我正在打印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

最新更新