He leído el post: Cómo encontrar todas las ocurrencias de un elemento en una lista?
Cómo encontrar todas las ocurrencias de un elemento en una lista?

La respuesta dada fue:

indices = [i for i, x in enumerate(my_list) if x == "whatever"]

Sé que esta es la lista de comprensión, pero no puedo romper este código y entender. Por favor alguien puede pedazo de comida para mí?


Si hacer el siguiente código:sé enumerar acaba de crear una tupla:

l=['a','b','c','d']
enumerate(l)

de salida:

(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')

Si hay una manera más sencilla estaría abierto a que demasiado.

InformationsquelleAutor user1527227 | 2012-11-20

2 Comentarios

  1. 7

    indices = [i for i, x in enumerate(my_list) if x == "whatever"] es equivalente a:

    # Create an empty list
    indices = []
    # Step through your target list, pulling out the tuples you mention above
    for index, value in enumerate(my_list):
        # If the current value matches something, append the index to the list
        if value == 'whatever':
            indices.append(index)

    La lista resultante contiene el índice de las posiciones de cada partido. Tomando esa misma for construir, en realidad se puede ir más allá y recorrer a través de listas de listas, envío en un Inicio-esque espiral de locura:

    In [1]: my_list = [['one', 'two'], ['three', 'four', 'two']]
    
    In [2]: l = [item for inner_list in my_list for item in inner_list if item == 'two']
    
    In [3]: l
    Out[3]: ['two', 'two']

    Que es equivalente a:

    l = []
    for inner_list in my_list:
      for item in inner_list:
        if item == 'two':
          l.append(item)

    La comprensión de lista que se incluyen en el principio es el de la mayoría de Python manera que se me ocurre para lograr lo que desea.

    • eres asombroso. gracias mi amigo.
    • No hay ningún problema, feliz de ayudar! Sugiero practicar la lista de comprensión, hasta que comiencen a ‘haga clic en’ – son una de las características que usted comienza a conseguir una manija en y, a continuación, usted se preguntará cómo pudo vivir sin ellos 🙂
    • Una de las mejores explicaciones de esto me he encontrado.
    • Ja, gracias, feliz ayudó 🙂
  2. 0
    indices = []
    for idx, elem in enumerate(my_list):
        if elem=='whatever':
            indices.append(idx)

Dejar respuesta

Please enter your comment!
Please enter your name here