簡體   English   中英

Python中的函數和可變列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM