2016-08-03 39 views
1

只需要一個簡單的問題,我需要編寫一個函數,它將一個列表作爲參數,並返回一個新列表,其中包含參數數據的所有元素,但最後一項出現兩次。返回一個列表的多個元素

這是我有:

def duplicate_last(data): 
    return data[:], data[-1] 

所以duplicate_last([1,2,3])出來的([1,2,3],3),但我需要它的格式[1,2,3,3]。

解決方案?

也得不到

return data[:] + data[-1] 

爲 「只能串聯列表(不是 」INT「),列出」

回答

1

你想要的清單工作。

您有:

def duplicate_last(data): 
    return data[:], data[-1] 

這將創建兩個元素,列表(data[:])和列表的最後一個元素的副本的元組。

錯誤消息告訴你到底data[:] + data[-1]是什麼問題 - 你正在嘗試使用list + list構造,但是你正在做list + int

解決方案:

new_list = data[:] 
new_list.append(data[-1]) 
return new_list 

或修復的TypeError直接:

return data[:] + [data[-1]] 

,具有額外括號是list + list一次。

您也可以切片,它總是返回一個列表做到這一點:

return data[:] + data[-1:] 

3中,我可能會使用最後的解決方案,因爲在我看來,最可讀的。雖然3中的任何一個都很好。

3

你可以做輕微的修正當前的代碼:

def duplicate_last(data): 
    return data[:] + [data[-1]]