Ich arbeite in Python und unter Berücksichtigung des folgenden Problems: Angesichts einer Liste, wie [1, 0, -2, 0, 0, 4, 5, 0, 3]
, die die ganze Zahl 0 mehrere Male enthält, möchte ich die Indizes für diese 0 und für jede , wie oft es in der Liste erscheint, bis ein anderes Element erscheint oder die Liste endet.Suchen Sie Elemente und Wiederholungen in der Liste
Bei l = [1, 0, -2, 0, 0, 4, 5, 0]
würde die Funktion zurückgeben. Das Ergebnis ist eine Liste von Tupeln. Das erste Element des Tupels ist der Index (in der Liste) des gegebenen Elements und das zweite ist die Anzahl der Wiederholungen, bis ein anderes Element erscheint oder die Liste endet.
Naiv, würde ich so etwas schreiben:
def myfun(l, x):
if x not in l:
print("The given element is not in list.")
else:
j = 0
n = len(l)
r = list()
while j <= (n-2):
count = 0
if l[j] == x:
while l[j + count] == x and j <= (n-1):
count +=1
r.append((j, count))
j += count
else:
j += 1
if l[-1] == x:
r.append((n-1, 1))
return r
Aber ich habe mich gefragt, ob es wäre ein schöner (kürzer?) Seinen Weg, um die gleiche Sache zu tun.
In der Tat kann es in einer Linie mit 'itertools' getan werden.Ich werde in diese Bibliothek schauen. Vielen Dank ! – Odile