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]]