Ich habe eine Liste mit sich wiederholenden Werte wie unten dargestellt:Spur Wertänderungen in einer repetitiven Liste in Python
x = [1, 1, 1, 2, 2, 2, 1, 1, 1]
Diese Liste wird von einem Muster erzeugt regulären Ausdruck entspricht (hier nicht dargestellt). Die Liste hat garantiert wiederkehrende Werte (viele, viele Wiederholungen - Hunderte, wenn nicht Tausende) und wird niemals zufällig angeordnet, weil das die Regex jedes Mal abgleicht.
Was ich will, ist die Liste Indizes bilden, an denen die Einträge aus dem vorherigen Wert. Für die obige Liste x
möchte ich eine Änderungsverfolgungsliste [3, 6]
erhalten, die angibt, dass sich x[3]
und x[6]
von ihren vorherigen Einträgen in der Liste unterscheiden.
Ich schaffte es, dies zu tun, aber ich fragte mich, ob es einen saubereren Weg gab. Hier ist mein Code:
x = [1, 1, 1, 2, 2, 2, 1, 1, 1]
flag = []
for index, item in enumerate(x):
if index != 0:
if x[index] != x[index-1]:
flag.append(index)
print flag
Ausgang: [3, 6]
Frage: Gibt es einen sauberen Weg zu tun, was ich will, in weniger Codezeilen?
gut es bei der Suche Sie könnten von 'lag' durch die zweite, wenn auf' = 'und auf diese Weise kann man einfach mit' Index-1 'in der zweiten if-Anweisung, und ändern Sie fallen loszuwerden das else und verschiebe diesen Code bis zum if –
@JamesKent Das ist eine gute Idee. Ich habe die Frage und den Code aktualisiert. Vielen Dank. – prrao
Sie haben bereits 'item', so dass Sie nicht erneut auf' x [index] 'zugreifen müssen für den Vergleich mit' x [index-1] ' –