Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2022 12:43:17

AleksandrM
Зарегистрирован: 2021-12-04
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

Здравствуйте.
Не получается удалить символ в конкретном столбце и в конкретной строке введенной пользователем.
И в выводе появляются запятые и квадратные скобки. Как выполнить вывод без них ?

 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')

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

Отредактировано AleksandrM (Янв. 7, 2022 12:45:05)

Офлайн

#2 Янв. 7, 2022 13:38:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце



по-моему всё верно



Офлайн

#3 Янв. 7, 2022 14:26:48

AleksandrM
Зарегистрирован: 2021-12-04
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

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

Офлайн

#4 Янв. 7, 2022 14:42:14

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

AleksandrM
вы и удаляете символ. Но так как вы удаляете символ в каждой строке, то удаляется столбец

 s = [1, 2, 3, 4, 5]
print(' '.join(str(i) for i in s))



Офлайн

#5 Янв. 7, 2022 17:29:22

AleksandrM
Зарегистрирован: 2021-12-04
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

А как реализовать, например удалить конкретно 5 ( в первом столбце, первой строки), из вашего скриншота ?

Отредактировано AleksandrM (Янв. 7, 2022 17:30:01)

Офлайн

#6 Янв. 7, 2022 18:46:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

AleksandrM
Мне кажется, вы вообще неправильно понимаете задание. В питоне удаление элемента списка встречается в очень ограниченном круге задач. Гораздо чаще просто строят новый список на основании старого. Если какие-то элементы не нужны, то их просто не включают в новый список.



Офлайн

#7 Янв. 7, 2022 19:57:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

Вообще, ввод чего-то, преобразование чего-то и вывод чего-то не должны быть связаны между собой вообще никак. То есть ввод не должен знать, что будет делаться с введёнными данными, будут ли они преобразовываться и будут ли они выводиться. Преобразования не должны знать, когда данные были введены и как, и куда эти данные потом пойдут после преобразований и будут ли вообще выводиться. Вывод не должен знать, откуда пришли данные и что с ними делали, вводили ли их и преобразовывали ли их.

Поэтому, например, вот у тебя двумерный список

  
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, вывод не знает; он просто делает своё дело.



Отредактировано py.user.next (Янв. 7, 2022 19:58:22)

Офлайн

#8 Янв. 8, 2022 05:59:44

AleksandrM
Зарегистрирован: 2021-12-04
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить символ в строке, столбце

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

Спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version