Как во вложенном списке удалить конкретный столбец?
Вот к чему пришёл, но выдаёт ошибку
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)