关于列表和矩阵的基本python问题
我正在通过《如何像计算机科学家一样思考》这本书来学习PYTHON。有一个将矩阵m乘以标量n的特定练习:
选择 | 换行 | 行号
- def scalar_mult(n, m):
- """
- >>> a = [[1, 2], [3, 4]]
- >>> scalar_mult(3, a)
- [[3, 6], [9, 12]]
- >>> b = [[3, 5, 7], [1, 1, 1], [0, 2, 0], [2,2, 3]]
- >>> b
- [[3, 5, 7], [1, 1, 1], [0, 2, 0], [2, 2, 3]]
- >>> scalar_mult(10, b)
- [[30, 50, 70], [10, 10, 10], [0, 20, 0], [20,20, 30]]
- >>> b
- [[3, 5, 7], [1, 1, 1], [0, 2, 0], [2, 2, 3]]
- """
- new_matrix = []
- for row in m:
- new_row = []
- for value in row:
- new_row += [value*n]
- new_matrix += [new_row]
- return new_matrix
以上是正确的代码。
现在,谁能解释一下为什么我会:
>b[[3,5,7],[1,1,1],[0,2,0],[2,2,3]]
标量_MULT(10,b)
预期:
[[30,50,70],[10,10,10],[0,20,0],[20,20,30]]
得到:
[30,50,70,10,10,10,0,20,20,30],[30,50,70,10,10,10,0,20,30],[30,50,70,10,10,10,20,30],[30,50,70,10,20,30],[30,50,70,10,10,10,0,20,0,20,20,30]]
当代码编写如下时:
选择 | 换行 | 行号
- new_matrix = []
- new_row = []
- for row in m:
- for value in row:
- new_row += [value*n]
- new_matrix += [new_row]
- return new_matrix
当我将new_row=[]移到"for row in m:"上方时,究竟会发生什么情况?