提问人:Mukesh Mahadev 提问时间:7/21/2022 最后编辑:BarmarMukesh Mahadev 更新时间:7/22/2022 访问量:64
为什么我要逐个元素复制数组,然后追加到列表而不是直接追加?
Why should I copy the array element by element and then append to list instead of appending directly?
问:
在下面的代码中,我使用回溯打印所有子集。 我终于打印了res_list。
res_list = [[], [13], [12], [12, 13]]
当我将 的元素逐个复制到列表中并附加到(第 4 行)时subset_list
res_list
res_list = [[], [], [], []]
当我直接附加到。(第 3 行)subset_list
res_list
我不明白为什么我需要逐个元素复制,然后附加而不是直接附加。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)
答:
0赞
Mukesh Mahadev
7/22/2022
#1
subset_list.copy()
两者都有效。subset_list[:]
直接附加 的引用。subset_list
为避免这种情况,请创建一个新列表并附加到 .res_list
评论
sub_set_list
res_list.append(sub_set_list)
res_list
sub_set_list
res_list.append(sub_set_list.copy())
print_subsets
res_list.append(sub_set_list[:])
是另一种简明的可能性