2013-02-13 17 views

risposta

52
indices = [i for i, s in enumerate(mylist) if 'aa' in s] 
+0

impressionante e perfetta ... vi ringrazio molto. –

+0

come si può rendere insensibile la distinzione tra maiuscole e minuscole? – abbood

+0

@abbood - Confrontando con 's.lower()' – StoryTeller

9

tua idea di utilizzare enumerate() era corretta.

indices = [] 
for i, elem in enumerate(mylist): 
    if 'aa' in elem: 
     indices.append(i) 

In alternativa, come una lista di comprensione:

indices = [i for i, elem in enumerate(mylist) if 'aa' in elem] 
5

Senza enumerate():

>>> mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"] 
>>> l = [mylist.index(i) for i in mylist if 'aa' in i] 
>>> l 
[0, 2, 5] 
+5

È probabile che venga eseguito in O (n^2), mentre l'enumerazione sarà O (n). – Johnsyweb

+1

Questo restituirà un risultato errato se una delle stringhe contenenti 'aa' è duplicata. –

Problemi correlati