在Python中为彼此分配列表

时间:2017-06-21 12:18:56

标签: python list python-3.x

有人能解释一下为什么这个python代码打印6而不是-10?

为什么s2 / list2在这段代码中没有改变?

def f(s1,s2):
   s2 = s1
   s1[2] = -7
   s1 = s2
   s2[2] = -10

list1 = [1,2,3]
list2 = [4,5,6]
f(list1,list2)
print(list2[2])

2 个答案:

答案 0 :(得分:1)

在函数内部的行s2 = s1之后,传入的s2在函数内部不再相关。

该行将值(即列表和内容)分配给变量s2。

答案 1 :(得分:1)

使用s2 = s1,您刚刚丢失了s2的本地引用(即list2)。从那时起,您正在改变s1list1),将-7分配给list1[2],然后分配-10

您没有以任何方式更改list2。例如,在作业中使用其他名称来使其起作用,s = s1