为什么第1行打印[1,2,3,“a”],而不仅仅是[1,2,3]?是因为L2 = f2(L1,'a')?怎么样?

时间:2017-03-26 07:23:20

标签: python

def f1(v,y):
      v = 4
      y += v
      return y

def f2(L,x):
    L.append(x)
    return L
L1 = [1,2,3]
L2 = `f2(L1,'a')`
print(L1)    # Line 1
print(L2)    # Line 2
a = 2
b = 3
c = f1(a,b)
print(a)     # Line 3
print(c)     # Line 4
print( f1(L1,1) )  # Line 5

为什么第1行打印[1,2,3,“a”],而不仅仅是[1,2,3]? 是因为L2 = f2(L1,'a')?怎么样?

4 个答案:

答案 0 :(得分:0)

f2将第二个参数附加到作为第一个参数传递的列表中。将"a"追加到[1, 2, 3]会产生您{1}}的输出。

答案 1 :(得分:0)

这是因为,在将参数L1传递给函数f2时,传递变量的指针。因此,当您在函数中向变量L附加值时,列表L1也会被修改(L只是指向L1的指针)

  

如果函数修改作为参数传递的对象,则调用者   会看到变化

查看this

因此is it beacuse of the L2=f2(L1,'a')?

希望它有所帮助!

答案 2 :(得分:0)

如果想将L1作为[1,2,3],则将其分配给新列表...

def f2(L,x):
    L3 = L.copy()  # copy passed list 'L' to L3
    L3.append(x)
    return L3 # return list with x at end of list

但这不会改变你当前的名单L1

答案 3 :(得分:0)

设L = [1,2,3] 你想在这个列表中追加'a' 像这样,L.append('a')
然后列表将是L = [1,2,3,'a']。 R8?
这里使用函数f2(L,'a')发生同样的事情 f2函数将一个列表和一个值'a'作为参数,并将'a'附加到L列表中,然后返回值为[1,2,3,'a']的L。 并将此列表分配给名为L2的变量。