在Python中复制字符串列表的最佳方法是什么?
我是Python新手,要将一个矩阵复制到另一个矩阵,我要做:在Python中复制字符串列表的最佳方法是什么?,python,matrix,Python,Matrix,我是Python新手,要将一个矩阵复制到另一个矩阵,我要做: import copy matrix1.append(copy.deepcopy(matrix2)) 有更好的,也许更短的方法吗 --更新: 这些类型是字符串列表,如[[“asdf”,“fdsa”],[“zxcv”,“vcxz”]],我想将其添加到我的其他列表中,但我不希望它们是相同的引用(我想编辑一个而不更改另一个)。如果您的矩阵实际上是一个列表,那么这更简单: import copy matrix1 = copy.deepcop
import copy
matrix1.append(copy.deepcopy(matrix2))
有更好的,也许更短的方法吗
--更新:
这些类型是字符串列表,如
[[“asdf”,“fdsa”],[“zxcv”,“vcxz”]]
,我想将其添加到我的其他列表中,但我不希望它们是相同的引用(我想编辑一个而不更改另一个)。如果您的矩阵实际上是一个列表,那么这更简单:
import copy
matrix1 = copy.deepcopy(matrix2)
您的代码正在扩展matrix1
,这必须事先存在,为什么除了添加新内容之外还要保留其原始内容
更新:
是的,你所拥有的是最好的方法。另一种方法:
original = [[1,2],[3,4]]
copy = [i[:] for i in original]
它有两个以上的维度吗?否则,请继续使用deepcopy
如果要附加:
matrix1.append([i[:] for i in original])
x=[[“asdf”,“fdsa”],[“zxcv”,“vcxz”]
,我会写copy=[x中ss的列表(ss)
(或者map(list,x)
)。这让我很清楚我在做什么copy
模块。由于其工作方式,复制模块可能会失败或给出错误答案。当你不知道你要复制的东西的结构或内容时,它通常是有用的,但如果你不知道,你通常会遇到比“我如何复制它?”更基本的问题,即“我如何使用它?”你需要向我们解释这些是什么类型的。我真的不明白你想做什么。您想将第二个矩阵的内容添加到第一个矩阵吗?@Ned Batchelder:我更新了问题,请看一看。@Bogdan是的,我想附加一份内容副本。鉴于您的需要,没有比这更短的方法了。您可以从copy import deepcopy执行
;matrix1.append(deepcopy(matrix2))
如果您愿意的话……谢谢您的回答,很抱歉没有更好地解释,我的意思是我想追加,它是一个现有的矩阵。@Tom,我没有完全理解您的意思。你有一些像x=[['a',b'],['c',d'],['e',f']]
和y=['w',x'],['y',z']
的东西,你想把x
变成['a',b'],['c',d'],['e',f'],['w',x'],['y',z']
,另外你还想做y[0][0]='q'
以后,不要更改x
中包含的任何内容?@Mike Graham:是的,这很完美。@Tom,x.extend(y中字符串的列表(strings)
看起来像[list(ss)for ss in matrix2]
就像copy.deepcopy(matrix2)
,我不明白使用list(ss)有什么区别
或者仅仅是ss
,ss
不是已经有一个列表了吗?@Tom,list
创建一个新列表,其中包含与旧列表相同的项目。对于所有意图和目的,列表定义为<代码> DEFLIST(迭代):返回[条目在迭代中] < /代码>。请给出复制模块何时失败或给出错误答案的例子吗?@安得烈,考虑<代码> DEF():PASS <代码> F.N=4 <代码> G =拷贝。g.n=16
打印f.n
或具有需要管理/关闭的数字文件描述符的用户定义对象。