Как вернуть массив из функций, и потом по этому значению найти максимальное значение?

Есть матрица и ее максимальное число для участка матрицы Нужно вынести создание матрицы в отдельную функцию а при нахождении максимального числа подставлять данные из функции где матрица создается

Как вернуть массив из функций, и потом по этому значению найти максимальное значение?

    n = 7

M = []  # матрица

for i in range(1, n + 1):
    line = []  # строка
    for j in range(1, n + 1):
        line = line + [randint(1, 100)]
    M = M + [line]

for i in range(0, n):
    for j in range(0, n):
        print(f" {M[i][j]:4d}", end="")
    print()

max_number = M[0][0]

for i in range(0, n):
    for j in range(0, n):
        if i >= j and j < n - i:  # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
            if M[i][j] > max_number:
                max_number = M[i][j]

print("максимальное число = ", max_number)

Ответы (3 шт):

Автор решения: Zhihar

зачем вы так коряво создаете матрицу?

M = []  # матрица

for i in range(1, n + 1):
    line = []  # строка
    for j in range(1, n + 1):
        line = line + [randint(1, 100)]
    M = M + [line]

почему бы не сделать так:

M = [[randint(1, 100) for _ in range(n)] for _ in range(n)]

а вместо

max_number = M[0][0]

for i in range(0, n):
    for j in range(0, n):
        if i >= j and j < n - i:  # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
            if M[i][j] > max_number:
                max_number = M[i][j]

можно

max_number = max(max(M[i][j] for j in range(n) if i >= j and j < n - i) for i in range(n))

Если вам надо вернуть матрицу и результат, то можно сделать через кортеж к примеру

def func(n):
    # тут вся логика работы

    return (M, max_number)

и теперь можно этим пользоваться

res = func(10)

res[0] - это матрица

res[1] - это найденное максимальное значение

→ Ссылка
Автор решения: Roddg
def matrix(n):
n = 7

M = []  # матрица

for i in range(1, n + 1):
    line = []  # строка
    for j in range(1, n + 1):
        line = line + [randint(1, 100)]
    M = M + [line]

for i in range(0, n):
    for j in range(0, n):
        print(f" {M[i][j]:4d}", end="")
    print()

max_number = M[0][0]

for i in range(0, n):
    for j in range(0, n):
        if i >= j and j < n - i:  # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
            if M[i][j] > max_number:
                max_number = M[i][j]
print("максимальное число = ", max_number)
return (M, max_number)


matrix(7)

ну вот так работает

но мне надо разделить этот код на две функции, чтобы из второй вызывать первую и получать максимальное число

→ Ссылка
Автор решения: Roddg

все решил

from random import *


def matrix(n):
    n = 7

    M = []  # матрица

    for i in range(1, n + 1):
        line = []  # строка
        for j in range(1, n + 1):
            line = line + [randint(1, 100)]
        M = M + [line]

    for i in range(0, n):
        for j in range(0, n):
            print(f" {M[i][j]:4d}", end="")
        print()
    return (M)


def find_max(M, n):
    max_number = M[0][0]

    for i in range(0, n):
        for j in range(0, n):
            if i >= j and j < n - i:  # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
                if M[i][j] > max_number:
                    max_number = M[i][j]
    print("максимальное число = ", max_number)
    return (max_number)


find_max(matrix(7), 7)
→ Ссылка