arr.append(curr) 将当前的元素 curr 作为引用添加到列表 arr 中。
arr.append(curr[:]) 将当前的元素 curr 的副本添加到列表 arr 中。
区别在于,arr.append(curr) 添加的是 curr 的引用,即 arr 中的元素和 curr 指向同一个内存地址,如果 curr 后续发生变化,那么 arr 中的元素也会随之改变。而 arr.append(curr[:]) 添加的是 curr 的副本,即 arr 中的元素和 curr 不再指向同一个内存地址,因此 curr 的变化不会影响 arr 中的元素。
下面是一个示例代码:
arr = []
curr = [1, 2, 3]
# 添加 curr 的引用
arr.append(curr)
print(arr) # 输出 [[1, 2, 3]]
# 修改 curr
curr.append(4)
print(arr) # 输出 [[1, 2, 3, 4]]
arr = []
curr = [1, 2, 3]
# 添加 curr 的副本
arr.append(curr[:])
print(arr) # 输出 [[1, 2, 3]]
# 修改 curr
curr.append(4)
print(arr) # 输出 [[1, 2, 3]]
从上述代码中可以看出,当使用 arr.append(curr) 时,arr 中的元素发生了改变,而当使用 arr.append(curr[:]) 时,arr 中的元素保持不变。