Операции Matriciales в Пайтоне

У меня есть следующая программа, в которой есть список списка и представляет квадратный массив. Функция должна возвращать True, если список, перемещенный за параметр представляет симметричный массив и False, если она не является симметричной, если это квадратный массив. Проблема моего кода состоит в том, что оно функционирует для неких случаев и для других не и не как enmender моя ошибка

import funcion

lista_lista = [
    [ 4,  54,  4,  2], 
    [ 7,  0,  25,  8], 
    [ 4,  10,  7,  0],
    [ 8,  82,  9,  9]
] 
muestra = funcion.estudio_matriz(lista_lista)
print(muestra)

def estudio_matriz(lista_lista):
    a = 0
    b = 0
    for elemento in numbers:
        if elemento[a] * elemento[b] == elemento[b] * elemento[a]:
            a += 1
            b += 1
            return Verdadero
    else: 
        return Falso
1
задан 07.11.2019, 01:32
2 ответа

Ты можешь упрощать то, что снопы используя numpy, как симметричный массив - массив, который как и Ваш transpuesta ты можешь использовать метод transpose из numpy

import numpy as np

lista_lista = [
    [ 4,  54,  4,  2], 
    [ 7,  0,  25,  8], 
    [ 4,  10,  7,  0],
    [ 8,  82,  9,  9]
] 

matriz = np.array(lista_lista)
print(np.array_equal(matriz, matriz.T))

, Вышедшие

False

matriz.T, возвращает тебе transpuesta array numpy и np.array.equal сравнивает два arrays, возвращая True или False, я думаю, что серьезный способ больше простая, его делает это

1
ответ дан 01.12.2019, 12:27

Проблемы в тебе cГіdigo

Есть несколько вещей в тебе cГіdigo, что не выходят хорошо (Какие-то уже он прокомментировал их @abulafia), asГ - что irГ© шаг за шагом diciГ©ndote то, что он делает для того, чтобы ты это понял.

Во-первых ты делаешь цикл for elemento in numbers, не объявив numbers раньше раньше, из-за которого devolverГЎ ошибка, asГ - что deberГ-схвати менять это на for elemento in lista_lista или менять ее funciГіn в def estudio_matriz(numbers).

, Когда ты делаешь if elemento[a] * elemento[b] == elemento[b] * elemento[a] (раньше ты дал стоимость 0 a и b), что estГЎs оценивая является elemento[0] * elemento[0] == elemento[0] * elemento[0], которые, как это очевидно, всегда будут являться верными, а следовательно он всегда будет продолжать читать то, что есть внутри if.

Внутри if ты помещаешь один return Verdadero а следовательно как только была прочитана ea lГ-nea она funciГіn terminarГЎ возвращая Verdadero и не volverГЎ есть делать другое возвращение цикла (в действительности devolverГЎ неудача, которую я объясняю в следующем pГЎrrafo, но однажды решено это, это - то, что ocurrirГЎ).

, поместив return Verdadero devolverГЎ ошибку, так как не определилась раньше переменная Verdadero. Для того, чтобы не случилось habrГЎ, что помещать return 'Verdadero' и нас devolverГЎ эта цепь текста, хотя это не обычное, нормальное значит помещать return True или return False, и что он возвратил нам один Booleano.

1
ответ дан 01.12.2019, 12:27

Теги

Похожие вопросы