>>> def dupu(t): return t >>> t=[1,2,3] >>> s=dupu(t) >>> s [1, 2, 3] >>> t.append(4) >>> s [1, 2, 3, 4]
本来只想改变t列表,结果s列表也发生相同变化了.根本原因在于变量s和t都是指向同一个list对象.
如何避免这种情况,让s和t相互独立?那就要让dupu返回一个新的list对象.
>>> def dupu(t): return [i for i in t] >>> t=[1,2,3] >>> s=dupu(t) >>> s [1, 2, 3] >>> t.append(4) >>> s [1, 2, 3] >>>
或者使用copy.deepcopy函数:
>>> import copy >>> def dupu(t): return copy.deepcopy(t) >>> t=[1,2,3] >>> s=dupu(t) >>> s [1, 2, 3] >>> t.append(4) >>> s [1, 2, 3]