#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