创建列表时,带有for循环的列表与常量乘数列表之间的区别

时间:2018-12-21 06:53:02

标签: python python-3.x list list-comprehension

我无法理解ans = [[None] * R for _ in range(C)] and ans = [[None] * R] * C

有什么区别

当我在自爆代码中使用第一个ans时,结果是[[1,4],[2,5],[3,6]],结果是我想要的,但是使用第二个ans则使每一行具有相同的列表,例如

[[3, 6], [3, 6], [3, 6]]

有人知道为什么吗?

class Solution():
    def transpose(self, A):
        R = len(A)
        C = len(A[0])

       ans = [[None] * R for _ in range(C)]
       # ans = [[None] * R] * C

       for r in range(R):
           for c in range(C):
               ans[c][r] = A[r][c]
       return ans

if __name__ == "__main__":
    A = [[1,2,3],[4,5,6]]
    ans = [[1,4],[2,5],[3,6]] # the target result
    print(Solution().transpose(A))

0 个答案:

没有答案