Найти - Пользователи
Полная версия: Удалить символ в строке, столбце
Начало » Python для новичков » Удалить символ в строке, столбце
1
AleksandrM
Здравствуйте.
Не получается удалить символ в конкретном столбце и в конкретной строке введенной пользователем.
И в выводе появляются запятые и квадратные скобки. Как выполнить вывод без них ?

 size = map(int, input(f'введите кол-во случайных символов в строке (через запятую, в след. строке и т.д.: ').split(','))
res = [[randint(0, 9) for i in range(s)] for s in size]
for a in res:
    for z in a:
        print(z, end=' ')
    print()
c, v = int(input('Удалить строку №: ')), int(input('Удалить столбец №: '))
del res[c - 1]
for row in res:
    del row[v - 1]
print(*res, sep='\n')

У меня удаляется сначала вся строка, а потом все столбцы введенные пользователем.
FishHook


по-моему всё верно
AleksandrM
Не могу от скобок и запятых (в выводе) избавиться, и как конкретно удалить символ (не весь столбец) ?
FishHook
AleksandrM
вы и удаляете символ. Но так как вы удаляете символ в каждой строке, то удаляется столбец

 s = [1, 2, 3, 4, 5]
print(' '.join(str(i) for i in s))
AleksandrM
А как реализовать, например удалить конкретно 5 ( в первом столбце, первой строки), из вашего скриншота ?
FishHook
AleksandrM
Мне кажется, вы вообще неправильно понимаете задание. В питоне удаление элемента списка встречается в очень ограниченном круге задач. Гораздо чаще просто строят новый список на основании старого. Если какие-то элементы не нужны, то их просто не включают в новый список.
py.user.next
Вообще, ввод чего-то, преобразование чего-то и вывод чего-то не должны быть связаны между собой вообще никак. То есть ввод не должен знать, что будет делаться с введёнными данными, будут ли они преобразовываться и будут ли они выводиться. Преобразования не должны знать, когда данные были введены и как, и куда эти данные потом пойдут после преобразований и будут ли вообще выводиться. Вывод не должен знать, откуда пришли данные и что с ними делали, вводили ли их и преобразовывали ли их.

Поэтому, например, вот у тебя двумерный список
  
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, вывод не знает; он просто делает своё дело.
AleksandrM
py.user.next
Вообще, ввод чего-то, преобразование чего-то и вывод чего-то не должны быть связаны между собой вообще никак. То есть ввод не должен знать, что будет делаться с введёнными данными, будут ли они преобразовываться и будут ли они выводиться. Преобразования не должны знать, когда данные были введены и как, и куда эти данные потом пойдут после преобразований и будут ли вообще выводиться. Вывод не должен знать, откуда пришли данные и что с ними делали, вводили ли их и преобразовывали ли их.Поэтому, например, вот у тебя двумерный список

Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB