返回列表的多个元素

时间:2016-08-03 02:14:56

标签: python python-3.x

只需要一个简单的问题我需要编写一个函数,该函数将列表作为参数并返回一个新列表,其中包含参数数据的所有元素,但最后一项出现两次。

这就是我所拥有的:

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")到列表"

2 个答案:

答案 0 :(得分:3)

您可以对当前代码稍作修改:

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

答案 1 :(得分: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中的任何一个都很好。