首页 > 解决方案 > Python中初始化嵌套列表的两种方法有什么区别

问题描述

我想转置一个矩阵,我使用两种方法将嵌套列表初始化为新矩阵。

第一种初始化嵌套列表的方法是

 re = [[0 for j in range(len(A))] for i in range(len(A[0]))]

第二种方法是

re = [[0]*len(A)]*len(A[0])

转置矩阵的代码如下。

class Solution:
    def transpose(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        l = len(A[0])
        # method 1
        re = [[0 for j in range(len(A))] for i in range(len(A[0]))]
        # # method 2
        # re = [[0]*len(A)]*len(A[0])
        for i in range(len(A)):
            for j in range(l):
                re[j][i] = A[i][j]
        return re
    def test(self):
        print(self.transpose([[1,2,3],[4,5,6]]))

tran = Solution()
tran.test()

但是,使用两种方法对矩阵进行转置的结果是不同的。

输出:

# mehtod 1
[[1, 4], [2, 5], [3, 6]]

# method 2
[[3, 6], [3, 6], [3, 6]]

谁能告诉我这两种初始化列表的方法的区别?</p>

标签: python

解决方案


推荐阅读