Python 如何在不更改原始列表的情况下将项目附加到列表中

Python 如何在不更改原始列表的情况下将项目附加到列表中,python,Python,我有一个列表,列表的末尾包含一个列表。如果此列表有多个元素,我希望在不在列表中的情况下使用单个值复制条目和 例如 也许有一个比我尝试过的更有效的解决方案,但我想知道为什么你会给我你所犯的错误 首先,尽管它表示它不是同一个列表,但它正在更改两个列表中的值。其次,当我创建第二个元素时,它也会更改前一个元素。欢迎任何解释。谢谢 Python中的变量只是引用。我建议用切片复制l_copy=l_orig[:] 当我第一次看到这个问题(预编辑)时,我没有看到任何代码,所以我没有上下文。看起来您正在将引用复

我有一个列表,列表的末尾包含一个列表。如果此列表有多个元素,我希望在不在列表中的情况下使用单个值复制条目和

例如

也许有一个比我尝试过的更有效的解决方案,但我想知道为什么你会给我你所犯的错误

首先,尽管它表示它不是同一个列表,但它正在更改两个列表中的值。其次,当我创建第二个元素时,它也会更改前一个元素。欢迎任何解释。谢谢


Python中的变量只是引用。我建议用切片复制<代码>l_copy=l_orig[:]

当我第一次看到这个问题(预编辑)时,我没有看到任何代码,所以我没有上下文。看起来您正在将引用复制到该行。(这意味着它实际上指向原始列表中的子列表。)


奇怪吧?看看下面的例子

lst1 = [1,2,3]
#bad copy example
_
lst2 = lst1
-
lst2.append(4)
print(lst1,lst2)
您可能希望只有
lst2
应该有
4
,但是没有。
lst1
lst2
都有4

[1, 2, 3, 4] [1, 2, 3, 4]
因此,为了避免这样的问题,我们可以使用
list2=list1.copy()

输出

[1, 2, 3] [1, 2, 3, 4]

请不要发布代码的截图。以文本形式发布代码(然后突出显示代码并按ctrl+
k
对其进行格式化)。请从中重复和。请参阅。因为您将原始列表中的相同对象附加到新列表中,然后修改这些对象。非常感谢您的回答。没有[:]我就看不到我在复制引用。我想
.copy()
也可以工作,但我在开始使用Python的早期遇到了类似的问题。只是要小心那些参考资料。很高兴知道这不是一项真正的任务。
[1, 2, 3, 4] [1, 2, 3, 4]
lst1 = [1,2,3]
lst2 = lst1.copy()
lst2.append(4)
print(lst1,lst2)
[1, 2, 3] [1, 2, 3, 4]