Я пытаюсь найти более быстрый способ фильтрации моего списка диапазонов, так что любой диапазон, который может быть полностью покрыт большим диапазоном, будет исключен. Например,Фильтрация списка целых чисел в диапазоне, чтобы исключить подмножества в python
#all ranges have width >1, which means no such case like xx=[1,1] in my list
#each range itself is sorted. E.g. no such case like [1,3,2]. It is already like [1,2,3]
#each range only contains continuous integers. E.g. no such case like [3,5,7], it will only be like [3,4,5,6,7]. In fact, you could simply consider the first and last integer of the range to know the whole range.
aa=[1,2,3]
bb=[2,3,4]
cc=[1,2]
dd=[0,1,2]
RangeList=[aa,bb,cc,dd]
#FinalList=[aa,bb,dd]
куб.см могут быть покрыты или аа дд (я считаю это как подмножество), поэтому хотелось бы, чтобы исключить его. Я определенно мог бы написать цикл для n^2 сравнений, но я был бы признателен за более быстрый метод, так как у меня много таких диапазонов.
Для произвольного аа, бб, куб.см и т.д. Я не думаю, что вы получите быстрее, чем п^2, так как вы должны более или менее проверить каждый список в «RangeList», чтобы увидеть, покрывают ли какие-либо списки. Вы могли бы сэкономить некоторое время, выполняя это наоборот: повторяя и отбрасывая все списки, которые являются подписок для каждого элемента. Если в подсписок есть какой-то шаблон, вы можете это использовать. – rlms
Не могли бы вы отредактировать свой вопрос, чтобы включить любой код, который вы уже написали? – rlms
Что касается того, может ли один список быть охвачен двумя другими списками, например. 'Аа = [1,2,3]; бб = [2,3,4]; куб.см = [1,4] '? Если вы исключаете 'cc', потому что он может быть покрыт' aa' и 'bb' при объединении? –