我正在尝试将列表的最后一项添加到我的代码列表中:
def dup_last(data):
data.append([-1])
return data
并且要求该功能是:
item = dup_last([1,2,3])
print(item)
但我希望我的输出只在一组括号内:
[1, 2, 3, 3]
答案 0 :(得分:3)
data.append([-1])
在这里,您要附加[-1]
,一个元素为-1
的列表,将其更改为:
data.append(data[-1])
答案 1 :(得分:2)
除了其他答案之外,我还建议在处理列表时使用切片表示法[:]
以防止在没有项目的情况下出现list index out of range
错误:
def dup_last(data):
data.append(data[-1])
return data
如果IndexError
为空列表,则上述函数将引发data
:
>>> print dup_last([])
----> 2 data.append(data[-1])
3 return data
4
IndexError: list index out of range
按照以下方式更新功能时,不再出现这种错误:
def dup_last(data):
data.extend(data[-1:])
return data
>>> print dup_last([])
[]
>>> print dup_last([1])
[1, 1]
>>> print dup_last([1, 2])
[1, 2, 2]
在SO question中有一个很好的解释,说明切片在Python中的工作原理。
答案 2 :(得分:1)
你需要做data.append(data[-1])
; data.append([-1])
会附加一个值,该值只包含-1
,因此您的结果将为[1, 2, 3, [-1]]
。
请注意,这将会就地修改列表,因此无论您传入哪个列表,最后一个元素都会重复,而不仅仅是您获得的列表(尽管它们可能是相同的列表)。
我不会为此使用函数;只需data.append(data[-1])
代替data = dup_last(data)
,甚至dup_last(data)
。此外,如果您正在使用列表文字,最好只手动添加副本; data = [1, 2, 3, 3]
vs data = dup_last([1, 2, 3])
或类似。