[如何在python函数内添加()值?为什么需要[:]?

问题描述 投票:-1回答:1

使用python时,如代码所示,当我们在函数内运行'print(a)'时。结果是[2,1,3]。但是,为什么列表b是[[1,2,3]]而c是[[2,1,3]]。

而且,如果我们删除函数的最后一句话(如代码第二部分所示),它将再次正常工作。似乎.append()在函数完成后运行,为什么?

a = [1,2,3]
b = []
c = []
def function():
    a[0], a[1] = a[1], a[0]

    print(a)

    b.append(a)
    c.append(a[:])
    a[0], a[1] = a[1], a[0]
function()
print(a)
print(b)
print(c)
[2,1,3]
[1,2,3]
[[1,2,3]]
[[2,1,3]]
a = [1,2,3]
b = []
c = []
def function():
    a[0], a[1] = a[1], a[0]

    print(a)

    b.append(a)
    c.append(a[:])
function()
print(a)
print(b)
print(c)

[2,1,3]
[2,1,3]
[[2,1,3]]
[[2,1,3]]
python append
1个回答
0
投票

似乎

b.append(a)

附加变量a

c.append(a[:])

附加a的内容。在第一种情况下,将附加变量,因此变量a的更改会更改b的值,因为附加了变量a。在第二种情况下,您只是追加a的内容,而不是变量。首先就像说:

b = [a]

第二个就像在说:

c = [2,1,3]
© www.soinside.com 2019 - 2024. All rights reserved.