python程序中[:]使用的问题
以下算法中使用了[:]进行赋值拷贝
def subsets(nums):
result = [[]]
for num in nums:
print("result: ",result[:])
for element in result[:]:
print("element: ", element[:])
x = element[:]
x.append(num)
result.append(x)
return result
nums = ['a', 'b', 'c']
print(subsets(nums))
输出如下:
result: [[]]
element: []
result: [[], ['a']]
element: []
element: ['a']
result: [[], ['a'], ['b'], ['a', 'b']]
element: []
element: ['a']
element: ['b']
element: ['a', 'b']
[[], ['a'], ['b'], ['a', 'b'], ['c'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]
如果不使用[:],而直接进行赋值,则可能出现类似地址赋值的情形