Python, show index of a specific line within the array

1

Dear Sirs,

Could you give me some help .. an idea?!

- > I'm trying to display (print) the index (the line) of the longest range between the largest and the shortest term of the rows of an array they meet.

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

Therefore, the largest range would be line 3, because 20-12 = 8.

I would like the output to be: Line 3, with the longest range being 8

The code below shows the row sequence and range value.

I've already been able to show the index of each row, but I'd like only the one with 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)
    
asked by anonymous 25.02.2018 / 19:35

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))
    
25.02.2018 / 19:52