Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/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中,如果2D列表由'For loop'生成而不是由元素乘法生成,则替换为single elment_Python_Arrays_List - Fatal编程技术网

在python中,如果2D列表由'For loop'生成而不是由元素乘法生成,则替换为single elment

在python中,如果2D列表由'For loop'生成而不是由元素乘法生成,则替换为single elment,python,arrays,list,Python,Arrays,List,假设我想要一个所有零都为5x3(行x列)的列表。我可以用两种方式列出清单 使用for循环: 使用我最近学的元素乘法方法 现在两个都生成了相同的2D列表,如下所示 [0, 0, 0] [0, 0, 0] [0, 0, 0] [0, 0, 0] [0, 0, 0] 现在我想用11替换第一行第三列中的一个元素,所以我使用了下面的行 a[0][2]=11 根据所使用的技术,这将给出两种不同的结果。 第一种技术给出: [0, 0, 11] [0, 0, 0] [0, 0, 0] [0, 0, 0] [0

假设我想要一个所有零都为5x3(行x列)的列表。我可以用两种方式列出清单

  • 使用for循环:
  • 使用我最近学的元素乘法方法
  • 现在两个都生成了相同的2D列表,如下所示

    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    
    现在我想用11替换第一行第三列中的一个元素,所以我使用了下面的行
    a[0][2]=11

    根据所使用的技术,这将给出两种不同的结果。 第一种技术给出:

    [0, 0, 11]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    
    第二种技术给出:

    [0, 0, 11]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    [0, 0, 0]
    
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    [0, 0, 11]
    
    第二个结果显然是不可取的,因为这不是我想要做的。 有人能解释为什么在第二种情况下结果会不同,以及这是一个bug还是一个特性吗


    如果这是一个功能,那么在什么情况下可以实现第二种方法呢?

    a=[[0表示范围内(3)]表示范围内(5)]
    是避免浅拷贝的最简洁的方法,但请参见上面的链接了解更多详细信息谢谢,这很有帮助