是的。使用new_matrix.insert(0,matrix[1][0])。
insert(position,value) 允许您将对象插入到列表中的指定位置。在这种情况下,由于要在开头插入数字,因此位置为零。
但是请注意,如果 new_matrix 有 n 个元素,这需要 O(n) 时间。如果 new_matrix 有 100 个元素,那么在开头添加一些东西比它有 10 个元素要长十倍。这比在列表末尾添加一些东西要慢得多,这通常需要 O(1):无论如何它都应该很快new_matrix 有多大。有关 python 操作的时间复杂度的更多信息,请参阅here。如果您经常将元素添加到列表的开头,您可能需要考虑是否可以反转您正在做的事情。
另外,请注意你做事的方式,这会给你一个 [4,[1]] 的 new_matrix。我不太确定你想要什么:如果你想要描述它们的最终结果,那么你需要new_matrix = [1]。如果您的代码是正确的 (new_matrix = [[1]]),并且您想要 [[4,1]],那么您需要执行 new_matrix[0].insert(0,4)。如果你想要[[4],[1]],你需要new_matrix.insert(0,[4]),等等。
顺便说一句,既然你似乎在用矩阵做事,你有没有考虑过使用 numpy?
(我想指出,如果这个答案看起来有点离题,那是因为这个问题被编辑成与最初提出的完全不同的东西。)
至于新问题:虽然 Stefan 的回答是好的 python,但你可能给自己太多的工作。很明显,您正在尝试实现类似矩阵转置的东西,但镜像除外。如果您正在执行这些操作,Numpy 会更加更轻松、更快捷。在这种情况下,使用 numpy 数组,您只需要执行以下操作:
import numpy as np # import numpy
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Here's your matrix
new_matrix_1 = matrix[::-1,:] # Here's your matrix with all the rows reversed: [[7,8,9],[4,5,6],[1,2,3]]
new_matrix = new_matrix_1.T # Here's the transpose of that, which is what you want.
虽然这只是一件事,但它会让一切你做的更轻松。例如,算术实际上会起作用:new_matrix+matrix、2*new_matrix 等等。否则,您必须手动实现。