这是因为它赋予新值
s1和
s2内部
swap0功能。这些分配不会在函数外传播。如果仅将函数主体复制并粘贴到函数调用的位置,就会看到它起作用。
您可以通过修改参数引用的对象而不是参数本身来解决此问题:
def swap0(s1, s2): assert type(s1) == list and type(s2) == list tmp = s1[:] s1[:] = s2 s2[:] = tmp
但是,在Python中进行交换的更简便更好的方法是:
s1, s2 = s2, s1
这也将只交换那些对列表的特定引用,而不交换列表内容本身。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)