1

I want to transpose a matrix, and I use two method to initialize a nested list as a new matrix.

The first method to initialize a nested list is

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

The second method is

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

The code to transpose a matrix is as follows.

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()

However, the result of transposing a matrix by using two methods are different.

Output:

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

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

Anybody can tell me the difference of this two method to initialize a list?

rosefun
  • 1,797
  • 1
  • 21
  • 33

0 Answers0