Python, display index of a specific row within the matrix

Asked

Viewed 842 times

1

Dear Gentlemen(as),

You could give me a hand. An idea?!

--> I am trying to present (print) the index(the line) of the longest interval between the longest and shortest of the rows of a matrix meet.

For example: Imagine an array with 3 rows and 2 columns. [[5, 6, 7], [8, 9, 11],[12, 13, 20]]

Therefore, the longest interval would be line 3, as 20-12=8.

I’d like the exit to be: Line 3, with a wider range of 8

The code below shows the sequence of lines and the interval value.

I had already managed to show the index of each line, but I would just like the one that has the highest range value.

Please, the problem is in the last "for" of the code. Downstairs.

   import random

    matriz = [] #cria matriz vazia
    m = int(input("Informe a qtd de linhas desejadas na Matriz: "))
    n = int(input("Informe a qtd de colunas desejadas na Matriz: "))
    a = int(input("Defina o início do intervalo para geração aleatória: "))
    b = int(input("Defina o fim do intervalo para geração aleatória: "))
    maior = None  # Armazena o maior valor
    posicao = (0, 0)  # Armazena a posição do maior valor

    for i in range(1, m+1):
        linha = []
        for j in range(1, n+1):
            x = float(random.uniform(a, b)) #gera números aleatórios dentro do intervalo definido
            if maior is None or x > maior:
                maior = x
                posicao = (i, j)

            linha.append(x)
        matriz.append(linha)

    produto = 1 #armazenará o produto dos maiores
    soma = 0 #armazenará a soma dos menores
    for linha in matriz:
        produto *= max(linha) #produto do maior valor de cada linha
        soma += min(linha) #soma do menor valor de cada linha

    for index, i in enumerate(matriz):
        maior_da_linha = max(i)
        menor_da_linha = min(i)
        intervalo = maior_da_linha - menor_da_linha
        index += 1
        print(index, i, intervalo)

1 answer

0


Try this:

matriz = [[5, 6, 347], [8, 9, 311], [12, 13, 20]]

def getIndexOfLongerRange (mat):
  ranges = [max(l) - min(l) for l in mat] # Criar lista de intervalos
  return ranges.index(max(ranges)) # Retorna o índice do maior intervalo

print (getIndexOfLongerRange(matriz))
  • @Wilsonjunior, here’s the link with your code and my https://repl.it/repls/MiserlyHardShell

  • 1

    I keep my thanks to you!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.