2012-03-14 83 views
0

我是新來的Python編程 爲什麼這個任務值K是給「無」在上面的例子中列表值Python列表概念

> >>> l=[2,3,4] 
> >>> k=l.append(14) 
> >>> print k 
None 
> >>> print l 
[2, 3, 4, 14] 

,我的14個值添加到列表中,然後分配到k但k正在打印無請告訴我爲什麼打印無而不是附加列表?

感謝 mukthyar

+1

爲什麼你指望它打印後附名單?您是否閱讀過文檔? – 2012-03-14 07:12:07

+0

rel:http://stackoverflow.com/questions/1452995/why-doesnt-a-python-dict-update-return-the-object – georg 2012-03-14 08:19:46

回答

7

append改變當前目錄,不返回任何東西。使用方法:(。.append()的.sort(),等)

k = l + [14] 

k = l[:]  # Copy list 
k.append(14) 
4

Python中的大多數方法,其發生變異的情況下不返回對象的一個​​副本。因此,l.append(X)實際上會像l.sort()那樣返回「None」。

你可能想使用更多的東西一樣:

l.append(14) 
k = l[-1] 
1

你看到的是預料到的 - 的list.append方法不返回修改後的列表。如果你看看Python教程的relevant section,你會注意到返回有用值的方法被記錄下來。

在交互式解釋工作,你可以告訴大家,表達因缺乏輸出的產生無:

>>> l = [1, 2, 3] 
>>> l.append(14) 
>>> 

如果(理論上)list.append返回的列表,你會看到以下內容:

>>> l = [1, 2, 3] 
>>> l.append(14) 
[1, 2, 3, 14] 
>>> 

以這種方式使用交互式解釋器可以幫助您避免打印每個值。

1

在Python默認返回類型是None,所以如果你的函數沒有返回任何值,那麼你會從該函數得到None。對象有不同的功能。一些功能在同一個對象上執行,而其他功能則返回修改後的副本。例如list.sort將更改原始列表,而sorted將返回新的已排序列表而不更改原始列表。所以append正在處理對象,所以它會改變對象的值而不是返回新的修改後的副本。

希望這會使您的觀點清楚地說明append方法。

1

從簡單的文字附加功能蟒蛇文件

list.append(x) 
    Add an item to the end of the list; equivalent to a[len(a):] = [x]. 

返回不過

suggested reading