Замена столбцов матрицы без numpy

#python

Вопрос:

Мне нужно поменять местами столбцы данной матрицы, применив некоторую функцию (M,i,j) , чтобы поменять местами i th и j th столбцы M .

 def swap_columns(M,i,j)  rows = M[i]  col = M[i][j]  for i in M:  N = M[i][j]  M[i][j] = M[j][i]  M[j][i] = N  return N  

Вообще не могу заставить это работать.

Комментарии:

1. Вы хотите создать новую матрицу с заменой столбцов или изменить матрицу на месте без создания нового объекта? Можете ли вы включить примеры ваших матриц, чтобы мы знали их расположение?

2. @Oli: Обе эти вещи довольно очевидны из вопроса ИМО.

Ответ №1:

В python переменной замена может быть выполнена с помощью: x, y = y, x

Код:

Эта функция изменит исходную матрицу. Нет необходимости возвращаться

 def col_swapper(matrix, col_1, col_2):  for line in range(len(matrix)):  matrix[line][col_1], matrix[line][col_2] = matrix[line][col_2], matrix[line][col_1]  

Комментарии:

1. Большое спасибо!

Ответ №2:

Вы могли бы сделать это (на месте), используя цикл for для выполнения обмена через распаковку строк матрицы:

 def swapCols(M,c1,c2):  for row,row[c2],row[c1] in ((row,row[c1],row[c2]) for row in M):pass  

Комментарии:

1. Это интересно. Есть ли у этой техники название?

2. Я не знаю, как это назвать. «Магия для распаковки петель», возможно 🙂

Ответ №3:

вы можете использовать эту функцию:

 import copy  def my_swap(M, i, j):  temp = copy.deepcopy(M)  for k in range(len(M)):  temp[k][i] = M[k][j]  temp[k][j] = M[k][i]  return temp