У меня есть два списка списков, состоящих из интервала реальной линиидекартово произведение перекрытия списка интервалов
I = [[8,12], [18,24], [3,5]]
J = [[7,10], [2,6], [18,22]]
Я хочу, чтобы gernerate список, содержащий пары интервалов из I и J, которые пересекаются. Например, один элемент списка будет [[8,12], [7,10]]. У меня есть цикл, который делает это
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)
, который дает
res=[[[8, 12], [7, 10]], [[18, 24], [18, 22]], [[3, 5], [2, 6]]]
, но я пытаюсь найти уборщик более эффективную версию
можно перекрывающиеся интервалы в каждом отдельном списке. Например, мы могли бы
I= [ [2,5], [1,4] ]
и
J= [[3,7], [10,12]]
в этом случае список будет результат
[ [[1,4], [3,7]], [[2,5],[3,7]]
Пропала некоторая информация. например, может ли быть множество перекрывающихся блоков? Могут ли быть перекрывающиеся блоки? Как его хранить в таком случае? – Prophecies
@Prophecies. Надеюсь, я ответил на ваш вопрос в моих праведниках. Я предполагаю, что вы имеете в виду перекрывающиеся блоки в каждом исходном списке – mikeL
Спасибо за разъяснение, и похоже, что @Keith ответил на ваш вопрос. – Prophecies