我试图用python以一种简单的方式创建一个列表矩阵,但结果证明它是错误的(方法1),它实际上只是复制列表地址,而不是复制列表行。有人能解释一下这个问题吗?我试图实现的是方法2,但我不明白为什么方法1不起作用。
谢谢,
# method 1
res=[[None]*4]*4
res[1][0]=-1
print(id(res[0]))
print(id(res[1]))
print(id(res[2]))
print(id(res[3]))
# output 1
140475957049792
140475957049792
140475957049792
140475957049792
# method 2
res=[[None for j in range(4)] for i in range(4)]
res[1][0]=-1
print(id(res[0]))
print(id(res[1]))
print(id(res[2]))
print(id(res[3]))
# output 2
140475957617344
140475957617280
140475957617216
140475957617152
希望我能以你清楚的方式回答这个问题。让我们从第一个示例开始,其中调用res=[[无]*4]*4
。在这个例子中,您将列表对象[无] 4次。并形成一个外部列表[[无],[无],[无],[无]]并复制该列表的4个副本。当您打印这四个列表的id时,它们指向相同的对象id。
在第二个例子中,您使用列表理解为每个序列创建新对象,因此您为每个列表获得不同的id。
如果对1个单元格进行更改,例如res[1][1]=1,然后打印res,您可以自己演示这些差异。
因为您的第一个代码使python对象[None]*4
,并将指向该对象的链接复制4次。这不是深度复制。
第二个代码4次生成列表理解生成的其他对象。它不是复制品。
问题内容: 这让我有点悲伤。 我从列表创建了字典 如何使字典的每个值成为一个单独的列表?在不迭代所有键并将它们设置为等于列表的情况下,这是否可能?我想修改一个列表而不更改其他列表。 问题答案: 你可以使用dict理解:
问题内容: 如何将值从一列复制到另一列?我有: 我希望有: 我应该有哪些mysql查询? 问题答案: 有关代码的简短答案是: 这是表名,周围是重音符号(又称“-”),因为这是MySQL惯例,用于转义关键字(在这种情况下为关键字)。 请注意,这是非常危险的查询,它将擦除表每行中列中的所有内容,并替换为(无论其值如何) 使用子句将查询限制为仅特定的行集更为常见:
本文向大家介绍Python中如何复制一个嵌套列表,包括了Python中如何复制一个嵌套列表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到在Python中复制嵌套列表的不同方法。让我们一一看。 首先,我们将使用循环复制嵌套列表。这是最常见的方式。 示例 输出结果 如果运行上面的代码,则将得到以下结果。 让我们看看如何使用列表理解和拆包运算符复制嵌套列表。 示例 输出结果 如果运行上
问题内容: 我已经寻找了一段时间,但找不到适合我问题的简单解决方案。我想在表中复制一条记录,但是当然,唯一的主键需要更新。 我有这个查询: 问题在于,这只是更改行的,而不是复制行。有人知道如何解决这个问题吗? // edit:我想在不键入所有字段名称的情况下执行此操作,因为字段名称会随着时间变化。 问题答案: 我通常使用的方法是使用临时表。它可能在计算上效率不高,但看起来还可以!在这里,我要完全复
问题内容: 我对列表副本有一些问题: 所以之后我得到了E0来自,我做的副本E0通过调用。我猜这里是的较深的副本E0,我通过。但是在主要功能上。 为什么循环之前的结果与for循环之后的结果不同? 下面是我的代码: 问题答案: 不是深层副本。你不使用做出深层副本两者并很浅拷贝)。 你用于深度复制列表。 请参阅以下代码段 现在看deepcopy操作
问题内容: 我想复制一个2D列表,以便如果我修改一个列表,则不修改另一个列表。 对于一维列表,我只是这样做: 现在,如果我修改了b,a就不会修改。 但这不适用于二维列表: 如果我修改了b,a也会被修改。 我该如何解决? 问题答案: 对于不管尺寸多少都可以工作的更通用的解决方案,请使用:
我有一个包含以下内容的文件 我想复制“email”列并创建一个新列“email2”,然后将gmail.com从email2列替换为hotmail.com 我是python新手,所以需要专家的帮助,我尝试了一些脚本,但如果有更好的方法,请告诉我。原始文件包含60000行。 这是最终脚本,唯一的问题是它没有完成整个输出文件,它只显示61409行,而在输入文件中有61438行。 inFile='c:\P
问题内容: 我对SQL Server不太满意,但是我试图在后台做一些工作来创建我们的EMR系统所缺乏的某些功能-在患者之间复制表格(及其所有数据)。 在SQL Server 2008 R2中,我有三个表来处理已填写的这些表格: 如您所见,它们都与match_id匹配,后者被链接到Patient_id(在第一张表中)。 我想要做的是将这三个表中所有的行复制为一个特定的match_id,重新复制到它们