Я пытаюсь преобразовать матрицу в Python 3.x без использования numpy. По какой-то причине у меня возникают проблемы с назначением new_matrix[col_num][row_num]
. Например, если я создаю новый экземпляр матрицы, такой как test = Matrix([[1,2,3,],[4,5,6],[7,8,9]])
, то при первом обращении к внутреннему циклу new_matrix становится [[1,None,None],[1,None,None],[1,None,None]]
вместо [[1,None,None],[None,None,None],[None,None,None]]
. Я не могу понять, почему это происходит, и почему он присваивает значение всем первым элементам списков.Трансформация матрицы в Python без модулей?
class Matrix:
def __init__(self, matrix):
self.matrix = matrix
def transpose(self):
new_matrix = [[None] * len(self.matrix[0])] * len(self.matrix)
row_num = 0
for row_num in range(len(self.matrix)):
for col_num in range(len(self.matrix[0])):
print(new_matrix[col_num][row_num])
print(new_matrix)
#assignment assigning more than one variable
new_matrix[col_num][row_num] = self.matrix[row_num][col_num]
print(new_matrix[col_num][row_num])
print(new_matrix)
col_num = 0
return new_matrix
Вы можете использовать 'zip' транспонировать. См. Http://stackoverflow.com/questions/10169919/python-matrix-transpose-and-zip. – kennytm