- Преобразуйте содержимое ваших входных данных
list
с в set
с заранее и сэкономьте много времени - Используйте
isdisjoint
для проверки перекрытия без необходимости делать временные set
без необходимости - Используйте
itertools.combinations
, чтобы упростить ваше вложенное l oop
Со всеми изменениями:
judge = [[0,3,5], [1,2,4], [1,5,6], [],..., []]
a = [[1,2], [2,3,4,5,7,9], [1,4,5], [],..., []]
# len(judge) == len(a)
res_intersect = []
for (j1, a1), (j2, a2) in itertools.combinations(zip(map(set, judge), map(set, a)), 2)):
if not j1.isdisjoint(j2):
res_intersect.append(a1 & a2)
Вероятно, не выигрывает от numba
, но это должно значительно сократить накладные расходы, избегая абсолютной тонны временных set
с.