Tupel zusammenfassen (rekursiv)
Verfasst: Dienstag 28. Mai 2013, 22:44
Hallo.
Ich habe ein kleines kniffliges Problem. Ich komm grad nicht drauf, wie ich das am besten lösen kann, auch weil ich schon länger nicht mehr sowas gemacht habe.
Ich habe eine liste von tupeln:
z.B. so:
Die tupel haben immer 2 Elemente und sind immer sortiert.
Ich will jetzt tupel zusammenfassen, wenn sie weniger als ein bestimmter wert (mal gap genannt) getrennt sind
D.h., wenn ich alle tupel kombinieren will, die "näher" sind als 15 sollte die liste am Ende so aussehen:
Ich wollte das eigentlich rekursiv lösen, aber ich habe mich irgendwie verwurstelt und komm nicht mehr aus meiner Rekursion raus
Ich denke, dass das eigentlich recht einfach sein sollte, aber wie gesagt, ich komm momentan nicht weiter.
Kann mir wer helfen?
Ich habe ein kleines kniffliges Problem. Ich komm grad nicht drauf, wie ich das am besten lösen kann, auch weil ich schon länger nicht mehr sowas gemacht habe.
Ich habe eine liste von tupeln:
z.B. so:
Code: Alles auswählen
x = [(13, 27), (40, 47), (50, 68), (243, 247), (257, 270)]
Ich will jetzt tupel zusammenfassen, wenn sie weniger als ein bestimmter wert (mal gap genannt) getrennt sind
Code: Alles auswählen
x[i+1][0] - x[i][1] <= gap
Code: Alles auswählen
[(13, 68), (243, 270)]
Ich denke, dass das eigentlich recht einfach sein sollte, aber wie gesagt, ich komm momentan nicht weiter.
Code: Alles auswählen
def join_tuples(tlist, gap):
for i in range(len(tlist)-1):
if tlist[i+1][0]-tlist[i][1] <= gap:
f= tlist[:i]
e= tlist[i+2:]
new_list = f
new_list.append((tlist[i][0], tlist[i+1][1]))
new_list.extend(e)
join_tuples(new_list, gap)
else:
print i, len(tlist), tlist
return tlist
break
else:
continue