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

Вот к чему пришёл, но выдаёт ошибку

from random import randint
N=int(input('Введите количество строк  '))
M=int(input('Введите количество столбцов '))
a=[[randint(-50,50) for _ in range(M)] for _ in range(N)]
print(a)
K=int(input('Введите строку, которую хотите удалить'))
Q=int(input('Введите столбец, который хотите удалить'))
del(a[K-1])
for i in range(N):
    for j in range(M):
        del a[Q-1]

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

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

В вашем случае очень хочется воспользоваться родным NumPy с его удобной индексацией:

import numpy as np

N=int(input('Введите количество строк  '))
M=int(input('Введите количество столбцов '))

a = np.random.randint(-50, 50, size=(N, M))
print(a)

K=int(input('Введите строку, которую хотите удалить'))
Q=int(input('Введите столбец, который хотите удалить'))

a = np.delete(a, K, axis=0)
a = np.delete(a, Q, axis=1)
#  учтите, что np.delete() - не inline-метод
print(a)

Суть, я думаю, вы поняли.

С другой стороны, использование NumPy для такой небольшой задачи не совсем оправдано, поэтому можно и без него, используя метод list.pop(index):

from random import randint
N=int(input('Введите количество строк  '))
M=int(input('Введите количество столбцов '))
a=[[randint(-50,50) for _ in range(M)] for _ in range(N)]
print(a)
K=int(input('Введите строку, которую хотите удалить'))
Q=int(input('Введите столбец, который хотите удалить'))
a.pop(K) 
 for i, x in enumerate(a):
     x.pop(Q)

print(a)
→ Ссылка