2015-06-09 17 views
5

Ho una listaindice di ritrovamento di più elementi in un elenco

myList = ["what is your name", "Hi, how are you", 
      "What about you", "How about a coffee", "How are you"] 

Ora voglio cercare di indice di tutte le occorrenze di "How" e "what". Come posso farlo in modo pititico?

+0

E se '' How' o che 'appare più di una volta in una stringa? E per quanto riguarda la case sensitive? – thefourtheye

risposta

3

Suona come un one-liner che Python è in grado di fare!

[i for i, j in enumerate(myList) if 'how' in j.lower() or 'what' in j.lower()] 
+1

Qualcuno ha provato davvero questo? Dovrebbe essere 'j.lower()', io è l'indice, giusto? –

+0

@ lord63.j Sì, mio ​​male. Ho dimenticato di cambiarlo quando ho cambiato '[j per ...' per '[i per ...' – TerryA

1

Questo funzionerà, ma si presuppone che non si cura di caso sensibilità:

myList = ["what is your name","Hi, how are you","What about you","How about a coffee","How are you"] 
duplicate = "how are you" 
index_list_of_duplicate = [i for i,j in enumerate(myList) if duplicate in j.lower()] 
print index_list_of_duplicate 
    [1,4] 
+0

Voleva indici, quindi dovrebbe essere '[j per i, j ...]';) – TerryA

+0

no , 'j' è la voce della lista,' i' è il numero da 'enumerate' – Mathias711

+0

Oops, stupido. Questo è ciò che accade quando non sei stato in giro per Python per età – TerryA

Problemi correlati