許多Python的列表方法在原地運行並返回None
(關閉我的頭頂,insert
,sort
,reverse
)。列表分配去了哪裏?
但是,有一種行爲經常使我感到挫折。如果我創建一個新的列表,通常會返回一個對象,並在同一時間將其插入,新名單「消失」:
mytup = (0, 1, 2, 3, 4)
print mytup # (0, 1, 2, 3, 4)
mylist = list(mytup)
print mylist # [0, 1, 2, 3, 4]
newlist = list(mytup).insert(0, 10)
print newlist # None
所以,如果我想修改一個元組,它需要更多的線路:
newlist = list(mytup)
newlist.insert(0, 10)
print newlist # [10, 0, 1, 2, 3, 4]
所以我有兩個問題:
- 它是正確的說,當我調用列表的構造函數,它返回的對象,但是當我打電話列表構造函數的方法就可以了,該方法使用0123「覆蓋」返回?再次,名單去?
- 有沒有辦法插入一個元組並返回一行中的列表?我不是想打代碼高爾夫,我只是不認爲這兩條線在邏輯上是不同的,不值得分離。
我認爲將它們放在一行上將是一個壞主意。他們是單獨的操作,爲什麼試圖將它們塞進一行? – 2013-04-20 14:45:26
在我的腦海裏,我有一個序列,我想修改它。如果它是一個列表,我可以直接插入。但它恰好是我自己的錯誤的一個元組,所以我必須使用兩行代碼?它減緩了我的思維過程。我認爲這是列表和元組在許多情況下具有類似行爲的結果。 – Lenna 2013-04-20 14:58:35
它不會「覆蓋」返回值。發生什麼事是,當你做'list(...)。insert(...)'你實際上在調用新創建列表的方法,你不再要求構造函數的結果。當然,這個方法返回'None'。 – ubik 2013-04-20 15:00:15