Suche Index zum Wert in einer Liste [PHP: array_search()]
Verfasst: Donnerstag 14. Dezember 2006, 09:58
Ich habe eine Liste, in der Werte doppelt auftauchen können. Nun suche ich in der Liste nach einem Begriff und möchte den zugehörigen Index (Position des Wertes) haben. Wenn der Begriff mehrfach auftaucht, möchte ich eine Liste von Indizes haben. Wenn der gesuchte Begriff gar nicht vorkommt, reicht mir eine leere Liste als Antwort.
Muss man sich das selber basteln?
Eine (unsaubere) Idee:
Damit tmp.count(v) dekrementiert wird, muss ich einen gefundenen Wert irgendwie zerstören. Aus der Liste entfernen kann ich ihn aber nicht (z.B. mit tmp.pop(index)), weil sich sonst die Indizes ändern. Ich muss den Wert an dieser Stelle "zurücksetzen", was ich hier mit tmp[index] = None versuche. Somit könnte ich aber nie nach dem Wert None suchen. Daher ist diese Idee nur sehr bedingt geeignet.
Muss man sich das selber basteln?
Eine (unsaubere) Idee:
Code: Alles auswählen
a = ["foo", "bar", "foo"]
def ListIndices(l, v):
tmp = l[:]
indices = []
while tmp.count(v) > 0:
index = tmp.index(v)
indices.append(index)
tmp[index] = None
return indices
print ListIndices(a, "foo") # [0, 2]
print ListIndices(a, "bar") # [1]
print ListIndices(a, None) # []