Как удалить строку и столбец по индексу в матрице?

Нужно удалить весь столбец/строку по индексу из матрицы (искал минимальный элемент главной диагонали). Теперь нужно удалить всю строку и столбец по индексу (индексом назвал minindex).

Искал в интернете как делать что-то подобное, но везде через numpy.

Должно получиться как-то так:

in:
[7, 9, 5]
[0, 6, 1]
[9, 6, 1]
out:
[7, 9]
[0, 6]

Ответы (2 шт):

Автор решения: Zhihar

ну во-первых задача решается легко в лоб:

matrix = [
    [7, 9, 5],
    [0, 6, 1],
    [9, 6, 1],
]

i = 1
j = 2

res = []

for row in enumerate(matrix):
    if row[0] != i:
        new_row = []
        for col in enumerate(row[1]):
            if col[0] != j:
                new_row.append(col[1])
        res.append(new_row)

print(res)

а во-вторых приведённый выше алгоритм можно схлопнуть в одну строку, если желаете:

res = [[col[1] for col in enumerate(row[1]) if col[0] != j] for row in enumerate(matrix) if row[0] != i]
→ Ссылка
Автор решения: MaxU

Решение с испольованием list.pop, для того чтобы удалять элементы "на месте" (in place), т.е. не создавая копии матрицы / строк / столбцов:

idx_row, idx_col = 2, 2

# удаляем строку
_ = matrix.pop(idx_row)

# удаляем столбец
rows = len(matrix)
for i in range(rows):
    _ = matrix[i].pop(idx_col)

результат:

print(matrix)
>>> [[7, 9], [0, 6]]
→ Ссылка