arr = [[0,1,1], [1,1,1], [1,1,1]]
def main(arr):
a = 0
b = 0
while a*b <= len(arr):
if arr[a][b] == 0:
arr[a][:] = 0
arr[:][b] = 0
else:
continue
a += 1
b += 1
print(arr)
main(arr)
Ошибка:
[[0, 1, 1], [1, 1, 1], [1, 1, 1]]
Traceback (most recent call last):
File "C:\Users\Admin\Desktop\task52.py", line 19, in
main(arr)
File "C:\Users\Admin\Desktop\task52.py", line 9, in main
if arr[a][b] == 0:
TypeError: 'int' object is not subscriptable
Задача: дана матрица N*M, состоящая из нулей и единиц. Необходимо преобразовать матрицу следующим образом: если элемент матрицы равен 0, то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M, состоящая из нулей и единиц. N,M — натуральные числа от 1 до 10^6.
Вывод: матрица после преобразования.
Python
Нужна помощь в python
arr[a][:] = 0 может заменить на что-то более простое, к примеру
for i in range( 3 ):
arr[a][i] = 0
for i in range( 3 ):
arr[a][i] = 0
Вот мой вариант:
"""
Задача: дана матрица N*M, состоящая из нулей и единиц.
Необходимо преобразовать матрицу следующим образом:
если элемент матрицы равен 0,
то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M,
состоящая из нулей и единиц.
N,M — натуральные числа от 1 до 10^6.
"""
arr = [[0,1,1,1,1], [1,1,1,1,1], [1,1,1,0,1], [1,1,1,1,1]]
pos0 = []
print('До')
print(*arr, sep='\n')
for i, a in enumerate(arr):
~~~~for j, b in enumerate(a):
~~~~~~~~if b == 0:
~~~~~~~~~~~~pos0.append([i, j])
~~~~~~~~~~~~
for p in pos0:
~~~~arr[p[0]] = [0]*len(arr[0])
~~~~for i in range(len(arr)):
~~~~~~~~arr[i][p[1]] = 0
~~~~~~~~~~~~~~~~~~~~
print('После')
print(*arr, sep='\n')
Вывод
===============
До
[0, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 0, 1]
[1, 1, 1, 1, 1]
После
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
>>>
PS
Уверен, что можно сделать как-нибудь поизящней, но по-моему такой вариант решения "в лоб", хорош тем, что мозги не надо наизнанку выворачивать, как в случае использования всех наворотов питона и запихивания всего кода в одну строку.
PS2
в
arr[p[0]] = [0]*len(arr[0])
len(arr[0]), потому, что предполагается, что все строки имеют одинаковую длину (по условию).
А если строки разной длины, то все равно нельзя просто
arr[p[0]] = [0]*len(arr[p[0]])
а надо еще проверять, чтобы за длину не вылезло.
"""
Задача: дана матрица N*M, состоящая из нулей и единиц.
Необходимо преобразовать матрицу следующим образом:
если элемент матрицы равен 0,
то всю строку и весь столбец нужно «обнулить».
Входные данные: arr — матрица N*M,
состоящая из нулей и единиц.
N,M — натуральные числа от 1 до 10^6.
"""
arr = [[0,1,1,1,1], [1,1,1,1,1], [1,1,1,0,1], [1,1,1,1,1]]
pos0 = []
print('До')
print(*arr, sep='\n')
for i, a in enumerate(arr):
~~~~for j, b in enumerate(a):
~~~~~~~~if b == 0:
~~~~~~~~~~~~pos0.append([i, j])
~~~~~~~~~~~~
for p in pos0:
~~~~arr[p[0]] = [0]*len(arr[0])
~~~~for i in range(len(arr)):
~~~~~~~~arr[i][p[1]] = 0
~~~~~~~~~~~~~~~~~~~~
print('После')
print(*arr, sep='\n')
Вывод
===============
До
[0, 1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 0, 1]
[1, 1, 1, 1, 1]
После
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 1]
>>>
PS
Уверен, что можно сделать как-нибудь поизящней, но по-моему такой вариант решения "в лоб", хорош тем, что мозги не надо наизнанку выворачивать, как в случае использования всех наворотов питона и запихивания всего кода в одну строку.
PS2
в
arr[p[0]] = [0]*len(arr[0])
len(arr[0]), потому, что предполагается, что все строки имеют одинаковую длину (по условию).
А если строки разной длины, то все равно нельзя просто
arr[p[0]] = [0]*len(arr[p[0]])
а надо еще проверять, чтобы за длину не вылезло.
Похожие вопросы
- Нужна помощь по PYTHON,заранее спасибо
- Нужна помощь.(Язык программирования Python)
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Python нужна помощь
- Очень нужна помощь с программой на Python! 1 курс матфака
- Python помощь в исправлении ошибок, очень нужна помощь!
- Для чего нужны аннотации в python?
- Помощь с Python Завершение после выполнения части кода
- Можно помощь в Python Коде.
- Срочная помощь по Python