Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Сложение смежных элементов двумерного массива Python [закрыт]

#python #python_3x #массивы #numpy


        
             
                
                    
                        
                            Закрыт. Этот вопрос необходимо уточнить или дополнить
подробностями. Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Добавьте больше подробностей
и уточните проблему, отредактировав это сообщение.
                        
                        Закрыт 3 месяца назад.
                                                                                
           
                
        
Есть массив 

m = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]


на вход подается матрица n*m, на выходе должна получиться матрица такой же размерности
но состоящая из суммы смежных элементов.например элемент [0][0] новой матрицы [i-1][j]+[i+1][j]+[i][j-1]+[i][j+1]
это 7+4+3+2=16.

Вариант вывода:

[16, 17, 18]
[19, 20, 21]
[22, 23, 24]

    


Ответы

Ответ 1



Решал аналогичную задачу на Stepik, давно было дело. Единственная разница с вашим условием в том, что строки подавались пользовательским вводом последовательно и последняя строка содержала строку "end". Мое решение не самое лаконичное, но, возможно, оно поможет вам. # В этом блоке я просто как бы получаю вашу переменную m, но с пользовательского ввода enter = input() matrix = [] while enter != 'end': nums = [int(x) for x in enter.split()] matrix.append(nums) enter = input() # Затем создаю матрицу такого же размера, но состоящую из нулей new_matrix = [[0 for j in range(len(i))] for i in matrix] # А потом наполняю новую матрицу значениями for i in range(len(matrix)): for j in range(len(matrix[i])): if i < len(matrix)-1 and j < len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[i + 1][j], matrix[i][j - 1], matrix[i][j + 1]]) elif i == len(matrix)-1 and j < len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[0][j], matrix[i][j - 1], matrix[i][j + 1]]) elif i < len(matrix)-1 and j == len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[i + 1][j], matrix[i][j - 1], matrix[i][0]]) elif i == len(matrix)-1 and j == len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[0][j], matrix[i][j - 1], matrix[i][0]]) new_matrix[i][j] = x # А потом печатаю ответ (так нужно было по условию задачи) for row in new_matrix: print(*row)

Комментариев нет:

Отправить комментарий