Ich versuche, eine Matrix in Python 3.x zu transponieren, ohne numpy zu verwenden. Aus irgendeinem Grund habe ich Probleme mit der Zuweisung von new_matrix[col_num][row_num]
. Wenn ich zum Beispiel eine neue Instanz von Matrix wie test = Matrix([[1,2,3,],[4,5,6],[7,8,9]])
erstelle, wird new_matrix beim ersten Durchlauf durch die innere for-Schleife [[1,None,None],[1,None,None],[1,None,None]]
anstelle von [[1,None,None],[None,None,None],[None,None,None]]
. Ich kann nicht herausfinden, warum das passiert und warum es ALLEN ersten Elementen von Listen einen Wert zuweist.Matrix in Python ohne Module transponieren?
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
Sie 'zip' verwenden könnten umzusetzen. Siehe http://stackoverflow.com/questions/10169919/python-matrix-transpose-and-zip. – kennytm