Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将一个列表作为单个条目添加到另一个列表中_Python_List - Fatal编程技术网

Python将一个列表作为单个条目添加到另一个列表中

Python将一个列表作为单个条目添加到另一个列表中,python,list,Python,List,这里的目标是得到一个列表“[1,2,3,4],并按原样添加到另一个列表中;所以我可以有一个列表 masterlist = [[1,2,3,4],[5,6,7,8],.....] 但我不能把这个弄对 我确实尝试了append,这很有效,但它复制了对我所附加列表的引用,它不会复制值,所以如果我清空了我所附加的列表,我最终会清除整个列表 list1 = [1,2,3,4] masterlist.append(list1) del list1[:] list1 = [5,6,7,8] maste

这里的目标是得到一个列表“[1,2,3,4],并按原样添加到另一个列表中;所以我可以有一个列表

masterlist = [[1,2,3,4],[5,6,7,8],.....]
但我不能把这个弄对

我确实尝试了append,这很有效,但它复制了对我所附加列表的引用,它不会复制值,所以如果我清空了我所附加的列表,我最终会清除整个列表

list1 = [1,2,3,4]

masterlist.append(list1)

del list1[:]
list1 = [5,6,7,8]

masterlist.append(list1)
这导致主列表有两个列表,但它们基本相同,因此看起来如下所示:

[[5,6,7,8],[5,6,7,8]]
而我想要
[[1,2,3,4],[5,6,7,8]

我确实尝试使用extend,但这会将当前列表中的每个元素添加为另一个列表中的单个条目,因此我最终使用

[1,2,3,4,5,6,7,8]

如何在列表中添加内容本身,而不是引用

编辑:这不是一个与深度或浅复制相关的问题;另一个相关的问题似乎类似,但并没有解决我的问题。我在这里看到了一个完全符合我的情况的解决方案

您可以:

>>> masterlist = [[1,2,3,4],[5,6,7,8]]
>>> list1 = [1,2,3,4]
>>> masterlist[len(masterlist):]=[list1[:]]
>>> del list1
>>> masterlist
[[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
或者

或者,仅限Python3:

masterlist.append(list1.copy())
你可以做:

>>> masterlist = [[1,2,3,4],[5,6,7,8]]
>>> list1 = [1,2,3,4]
>>> masterlist[len(masterlist):]=[list1[:]]
>>> del list1
>>> masterlist
[[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
或者

或者,仅限Python3:

masterlist.append(list1.copy())

如果要附加副本。Python不会像C++那样隐式地复制副本,为什么使用<代码> DEL>代码>?无论如何,您可能有兴趣导入
copy
,并使用它来复制
list1
以进行追加。此外,您发布的代码不会产生您描述的输出,因为
list1=[5,6,7,8]
生成一个新的列表对象。你需要习惯于操作新对象和操作修改现有的对象。我刚刚知道Python不象C++那样工作。假设将一个列表添加到另一个列表中,会在该列表对象中隐式创建一个列表,并将每个元素都放入其中。谢谢你的澄清我不知道你为什么把这个标记为重复的:其他问题与此完全不同。作为其他任何人寻找我这样问题答案的证据,很可能会找到这个答案。同样,我没有看到其他两个与我的案例相关的问题。从学术角度来看,它们可能是相关的,但它们不会澄清我所做的事情发生的原因,也不会说明如何解决它。作为对DAWG的尊重,你甚至不应该考虑关闭它。Python不会像C++那样隐式地复制副本,为什么使用<代码> DEL>代码>?无论如何,您可能有兴趣导入
copy
,并使用它来复制
list1
以进行追加。此外,您发布的代码不会产生您描述的输出,因为
list1=[5,6,7,8]
生成一个新的列表对象。你需要习惯于操作新对象和操作修改现有的对象。我刚刚知道Python不象C++那样工作。假设将一个列表添加到另一个列表中,会在该列表对象中隐式创建一个列表,并将每个元素都放入其中。谢谢你的澄清我不知道你为什么把这个标记为重复的:其他问题与此完全不同。作为其他任何人寻找我这样问题答案的证据,很可能会找到这个答案。同样,我没有看到其他两个与我的案例相关的问题。从学术角度来看,它们可能是相关的,但它们不会澄清我所做的事情发生的原因,也不会说明如何解决它。作为对DAWG的尊重,你不应该考虑关闭这个。或者只是<代码> MistList.AppEnter(List1[:])…切片/复制发生在附加到主列表的匿名对象(对的引用)上。就是这样!因此,当我使用
[:]
时,我实际上是在添加列表本身的值,而不是对它的引用。谢谢或者
masterlist+=[list1[:]
或者只是
masterlist.append(list1[:])
。。。切片/复制发生在附加到主列表的匿名对象(对的引用)上。就是这样!因此,当我使用
[:]
时,我实际上是在添加列表本身的值,而不是对它的引用。谢谢或
masterlist+=[list1[:]