Вообще, ввод чего-то, преобразование чего-то и вывод чего-то не должны быть связаны между собой вообще никак. То есть ввод не должен знать, что будет делаться с введёнными данными, будут ли они преобразовываться и будут ли они выводиться. Преобразования не должны знать, когда данные были введены и как, и куда эти данные потом пойдут после преобразований и будут ли вообще выводиться. Вывод не должен знать, откуда пришли данные и что с ними делали, вводили ли их и преобразовывали ли их.
Поэтому, например, вот у тебя двумерный список
arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Введён он или будет ли он выводиться - неважно.
Тебе нужно удалить из него четвёрку, ты делаешь так
>>> arr = [
... [1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]
... ]
>>>
>>> i, j = 2, 1
>>> del arr[i - 1][j - 1]
>>>
>>> arr
[[1, 2, 3], [5, 6], [7, 8, 9]]
>>>
Вот она удалена. Индексы делаем не с нуля потому, что работаем с массивом математически, а не как программисты. В математике индексы начинаются с единицы (натуральные числа).
Дальше ты уже решаешь, будешь ли ты его выводить и как ты его будешь выводить, если будешь выводить. Дальше можно его и не выводить, а продолжать преобразовывать дальше. Ни одно преобразование не знает про следующие действия, которые будут производиться, вывод это или ещё какие-то преобразования.
Удалить элемент можно и так
>>> arr = [
... [1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]
... ]
>>>
>>> i, j = 2, 1
>>> arr[i - 1][j - 1] = None
>>>
>>> arr
[[1, 2, 3], [None, 5, 6], [7, 8, 9]]
>>>
Тогда размерность массива сохраняется. И при выводе или других преобразованиях можно учитывать, что элемент не существует, когда он равен None.
А то, что он у тебя выводит список с квадратными скобками и запятыми, происходит из-за того, что ты просто не заморочился с выводом, тогда как выводу нужно уделить отдельное внимание.
Вот вывод списка, про который выводу ничего не известно
>>> arr = [
... [1, 2, 3],
... [None, 5, 6],
... [7, 8, 9]
... ]
>>>
>>> for i in arr:
... for j in i:
... if j is None:
... print('.', end=' ')
... else:
... print(j, end=' ')
... print()
...
1 2 3
. 5 6
7 8 9
>>>
Откуда там None, вывод не знает; он просто делает своё дело.