Ich habe zwei Listen von Listen-Intervall aus der reellen Achsekartesisches Produkt von überlappenden Liste von Intervallen
I = [[8,12], [18,24], [3,5]]
J = [[7,10], [2,6], [18,22]]
I eine Liste gernerate wollen, daß die Paare von Intervallen von I und J enthält, die sich überlappen. Zum Beispiel wäre ein Element der Liste [[8,12], [7,10]]. Ich habe eine Schleife, die dies tut
res=[]
for i in range(len(I)):
des=[]
for j in range(len(J)):
if (I[i][1]<=J[j][1] and I[i][1]>=J[j][0]) or (J[j][1]<=I[i][1] and J[j][1]>=I[i][0]):
z=[I[i],J[j]]
res.append(z)
die
res=[[[8, 12], [7, 10]], [[18, 24], [18, 22]], [[3, 5], [2, 6]]]
liefert aber ich versuche, eine sauberere effizientere Version
Es ist möglich, überlappende Intervalle in jeder separaten Liste zu finden. Zum Beispiel könnten wir
I= [ [2,5], [1,4] ]
und
J= [[3,7], [10,12]]
in diesem Fall der Liste haben das Ergebnis
[ [[1,4], [3,7]], [[2,5],[3,7]]
Es fehlen einige Informationen. Kann es beispielsweise mehrere überlappende Blöcke geben? Kann es keine überlappenden Blöcke geben? Wie sollte es in diesen Fällen gespeichert werden? – Prophecies
@Prophezies. Hoffentlich habe ich deine Frage in meinen Änderungen beantwortet. Ich nehme an, du meinst überlappende Blöcke in jeder ursprünglichen Liste – mikeL
Danke für die Klarstellung und es sieht aus wie @Keith hat Ihre Frage beantwortet. – Prophecies