Python: создайте матрицу длины пересечения двух списков, элементами которых являются наборы чисел

Я использую Python 3.5, и мне интересно, есть ли более эффективный способ сделать это.

  • У меня два списка (list1 а также list2).
  • Каждый элемент в каждом списке set чисел.
  • В приведенном ниже примере list1 в основном 1x4 "матрица" и list2 является матрицей 1x3.
  • Я хочу сделать матрицу 4x3, которая дает длину пересечения каждого элемента в list1 с каждым элементом в list2

Вот пример кода, который работает, но он несколько медленный, когда длина моих списков исчисляется тысячами.

Есть ли более быстрый / лучший способ??

Спасибо!

list1 = [{1,2,3}, {4,5,6}, {1,2,9}, {4,5,10}] # 1 x 4 "matrix"
list2 = [{1,3,9}, {4,2,8}, {1,0,10}] # 1 x 3 "matrix"

myoutputmatrix = []

for aset in list1:
    small_list = [len(aset & asecondset) for asecondset in list2]
    myoutputmatrix .append(small_list)

myoutputmatrix # [[2, 1, 1], [0, 1, 0], [2, 1, 1], [0, 1, 1]]

0 ответов

Другие вопросы по тегам