Python 将重复项添加到列表中

Python 将重复项添加到列表中,python,list,Python,List,我正在尝试将列表的最后一项添加到列表中我的代码是: def dup_last(data): data.append([-1]) return data 对该函数的调用是: item = dup_last([1,2,3]) print(item) 但我希望我的输出仅在一组括号内,如: [1, 2, 3, 3] 在这里添加[-1],一个元素为-1的列表,将其更改为: data.append(data[-1]) 在这里添加[-1],一个元素为-1的列表,将其更改为: data.

我正在尝试将列表的最后一项添加到列表中我的代码是:

def dup_last(data):
    data.append([-1])
    return data
对该函数的调用是:

item = dup_last([1,2,3])
print(item)
但我希望我的输出仅在一组括号内,如:

[1, 2, 3, 3]
在这里添加[-1],一个元素为-1的列表,将其更改为:

data.append(data[-1])
在这里添加[-1],一个元素为-1的列表,将其更改为:

data.append(data[-1])
您需要处理数据。appenddata[-1];append[-1]追加一个值,该值是一个仅包含-1的列表,因此您的结果将是[1,2,3,[-1]]

请注意,这将在适当的位置修改列表,因此无论您传入哪个列表,都将复制最后一个元素,而不仅仅是您得到的列表,尽管它们可能是相同的列表

我不会为此使用函数;只需执行data.appenddata[-1],而不是data=dup_lastdata,甚至dup_lastdata。此外,如果您使用的是列表文字,则最好手动添加副本;data=[1,2,3,3]vs data=dup_last[1,2,3]或类似值。

您需要执行数据。追加数据[-1];append[-1]追加一个值,该值是一个仅包含-1的列表,因此您的结果将是[1,2,3,[-1]]

请注意,这将在适当的位置修改列表,因此无论您传入哪个列表,都将复制最后一个元素,而不仅仅是您得到的列表,尽管它们可能是相同的列表


我不会为此使用函数;只需执行data.appenddata[-1],而不是data=dup_lastdata,甚至dup_lastdata。此外,如果您使用的是列表文字,则最好手动添加副本;data=[1,2,3,3]vs data=dup_last[1,2,3]或类似的答案。

除了其他答案之外,我还建议在处理列表时使用切片符号[:],以防止在没有项目的情况下,列表索引超出范围错误:

def dup_last(data):
    data.append(data[-1])
    return data
如果数据为空列表,上述函数将引发Indexer错误:

>>> 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

关于切片在Python中的工作原理,这里有一个很好的解释。

除了其他答案之外,我还建议在处理列表时使用切片符号[:],以防止在没有项的情况下获取列表索引超出范围的错误:

def dup_last(data):
    data.append(data[-1])
    return data
如果数据为空列表,上述函数将引发Indexer错误:

>>> 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

关于切片在Python中的工作原理,这里有一个很好的解释。

最好也包括您得到的输出,这样我们就可以看到它的错误原因:。@tomknight仅供参考,如果数据为空,您的函数将崩溃。@tomknight,其中一个答案解决了您的问题吗?如果是这样,请接受:。最好也包括您得到的输出,这样我们就可以看到错误的原因:。@tomknight仅供参考,如果数据为空,您的函数将崩溃。@tomknight,其中一个答案解决了您的问题吗?如果是,请接受:。谢谢于浩。我不知道你必须这么做,又学到了一个教训。谢谢你。我没意识到你必须这么做,又学到了一个教训。