只需要一个简单的问题我需要编写一个函数,该函数将列表作为参数并返回一个新列表,其中包含参数数据的所有元素,但最后一项出现两次。
这就是我所拥有的:
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")到列表"
答案 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中的任何一个都很好。