Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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_Matrix - Fatal编程技术网

在Python中复制字符串列表的最佳方法是什么?

在Python中复制字符串列表的最佳方法是什么?,python,matrix,Python,Matrix,我是Python新手,要将一个矩阵复制到另一个矩阵,我要做: import copy matrix1.append(copy.deepcopy(matrix2)) 有更好的,也许更短的方法吗 --更新: 这些类型是字符串列表,如[[“asdf”,“fdsa”],[“zxcv”,“vcxz”]],我想将其添加到我的其他列表中,但我不希望它们是相同的引用(我想编辑一个而不更改另一个)。如果您的矩阵实际上是一个列表,那么这更简单: import copy matrix1 = copy.deepcop

我是Python新手,要将一个矩阵复制到另一个矩阵,我要做:

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
    或具有需要管理/关闭的数字文件描述符的用户定义对象。