Supongamos que tengo una lista [['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]. No siempre hay 2 listas anidadas, podría haber más. Sé cómo compararía los índices 2 de esta lista específica, pero digamos que hay 6 listas anidadas.

¿Cómo compararía el índice 2 en todos ellos y luego almacenaría la lista con el mayor valor en su segundo índice? El punto es que no sé cuántas listas hay y necesito que funcione para cualquier cantidad. Hay una condición previa y es que las sublistas tienen la misma longitud y que el segundo índice contendrá un número entero.

Esta es una pregunta para la escuela, así que solo necesito ayuda con la idea básica y no realmente todo el fragmento de código , ya que no quiero plagiar. He hecho intentos, pero obtengo un error de índice fuera de rango. Cualquier ayuda sería apreciada

temp = []
for i in range(len(lst)):
    if lst[i][2] > lst[i+1][2]:
        temp = lst[i]
return temp    `
0
YellowSnow15 29 oct. 2017 a las 06:12

3 respuestas

La mejor respuesta

Puede usar el parámetro key en max:

s = [['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
new_s = max(s, key=lambda x:x[2])

Salida:

['orange', 'bush', 6, 3]

Con respecto a su código ahora, querrá asignar lst[0] a temp para darle a su algoritmo un punto de referencia para comenzar:

def the_max(lst):
   temp = lst[0] #use lst[0] as the first benchmark.
   for i in range(len(lst)):
      if lst[i][2] > temp[2]:
         temp = lst[i]
   return temp
0
Ajax1234 29 oct. 2017 a las 03:20

Lst = [['' manzana ',' árbol ', 4, 5], [' naranja ',' arbusto ', 6, 3], [' aa ',' bb ', 2, 3]]

print max(lst, key=lambda x:x[2])

O

temp = lst[0]
for i in range(len(lst)):
    temp = temp if temp[2] > lst[i][2] else lst[i]
print temp

salida: ['naranja', 'arbusto', 6, 3]

0
QuantumEnergy 29 oct. 2017 a las 03:34

Especificando la función clave para max, podemos lograr esto Aquí la clave es el segundo elemento en la lista. Entonces agregar key=lambda l:l[2] a la función máxima normal es la solución para esto

>>> max( lst ,key=lambda l :l[2])
['orange', 'bush', 6, 3]
>>> 

Lea esta publicación para obtener más detalles sobre cómo usar y las ventajas de usar key: lambda ¿Qué es key = lambda

0
Sandeep Lade 29 oct. 2017 a las 03:35