2016-08-03 55 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]] 
相关问题