2013-02-22 6 views
6

Ich habe einige Liste wie folgt aus:Wie findet man Indizes von Strings in Listen, die mit einem Teilstring beginnen?

lines = [ 
    "line", 
    "subline2", 
    "subline4", 
    "line", 
] 

Und ich möchte Liste der Index der Zeilen nehmen, die mit einem gewissen Teilkette beginnt.

Ich benutze diesen Ansatz:

starts = [n for n, l in enumerate(lines) if l.startswith('sub')] 

aber vielleicht jemand weiß, schönen Ansatz?

+0

Das ist ziemlich Pythonic für mich aussehen. – Blender

+0

Was ist los mit diesem? Es ist eine vollkommen gültige Python :) –

+0

@MarekKowalski Ich denke jedes Mal haben wir mehr Python Ansatz :) – kharandziuk

Antwort

1

Ich weiß, dass es eine Weile her ist, seit diese Frage aktiv war, aber hier ist eine andere Lösung, falls jemand interessiert ist.

Ihr Weg scheint in Ordnung, aber hier ist eine ähnliche Strategie, mit der list.index() Methode:

starts = [lines.index(l) for l in lines if l.startswith('sub')] 

Soweit der Zeit vergeht, Uhr der beiden Funktionen in etwa zum gleichen (im Durchschnitt 1.7145156860351563e-06 Sekunden für Ihre enumerate Lösung und 1.7133951187133788e-06 Sekunden für meine .index() Lösung)

Verwandte Themen