[英]Functions and Mutable lists in Python
抱歉,我是python的新手,但仍然想將自己的想法籠罩在一些基礎知識上。 我知道列表是python中的可變對象,但無法理解下面的兩個函數如何處理列表,以及為什么其中一個更改列表本身而另一個不更改列表
def f(x, y):
x.append(x.pop(0))
x.append(y[0])
return x
>>> a=[1,2,3]
>>> b=[1,2]
>>> f(a,b)
>>> [2, 3, 1, 1]
>>> a
>>> [2, 3, 1, 1]
def f(x, y):
y = y + [x]
return y
>>> a=[1,2,3]
>>> f(4,a)
>>> [1, 2, 3, 4]
>>> a
>>> [1, 2, 3]
謝謝
+
操作將結果存儲在新列表中,而append
操作將新值添加到現有列表中
例如,
def f(x, y):
y = y + [x]
print(y)
y.append(x)
print(y)
a=[1,2,3]
f(4,a)
print(a)
給
[1, 2, 3, 4]
[1, 2, 3, 4, 4]
[1, 2, 3]
y = y + [x]
創建一個新列表y
,因此更改不會反映到原始列表a
,並且后面的append
更改了新列表y
但
def f(x, y):
y.append(x)
print(y)
y = y + [x]
print(y)
a=[1,2,3]
f(4,a)
print(a)
產量
[1, 2, 3, 4]
[1, 2, 3, 4, 4]
[1, 2, 3, 4]
在這里, append
操作在創建新列表y
之后更改原始列表a
簡而言之,區別在於append
和+
的功能。 append
將一個新項目添加到列表中,而不創建一個新列表。 +
將兩個列表合並在一起,並創建一個新列表。
有關更多信息,請參見DNS的答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.