扫码关注官方订阅号
self.__permResult.append(array[:])
引用,浅拷贝,和深拷贝。题主只是引用,如果list里没有list或者dict等,可以进行浅拷贝。否则,应该进行深拷贝。可以参考下面的例子。
import copy l = [1,2,3,[4,5]] l2 = l l3 = l[:] l4 = copy.copy(l) #浅拷贝 l5 = copy.deepcopy(l) #深拷贝 l[-1].append('change') l.append(6) print l2 print l3 print l4 print l5 # [1, 2, 3, [4, 5, 'change'], 6] # [1, 2, 3, [4, 5, 'change']] # [1, 2, 3, [4, 5, 'change']] # [1, 2, 3, [4, 5]]
如果全排列,可以引用标准库中的 itertools
In [6]: list(itertools.permutations([1,2,3], 3)) Out[6]: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
append(array)方法只是把array的引用放进去了,并没有拷贝array。通过id(array)可以验证
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
引用,浅拷贝,和深拷贝。题主只是引用,如果list里没有list或者dict等,可以进行浅拷贝。否则,应该进行深拷贝。可以参考下面的例子。
如果全排列,可以引用标准库中的 itertools
append(array)方法只是把array的引用放进去了,并没有拷贝array。
通过id(array)可以验证