Python:创建一个矩阵,其长度为两个列表的交集,其元素是数字集

时间:2017-06-09 16:05:12

标签: python matrix set matrix-multiplication set-intersection

我使用的是Python 3.5,我想知道是否有更有效的方法可以做到这一点。

  • 我有两个列表(list1list2)。
  • 每个列表中的每个元素都是set个数字。
  • 在下面的示例中,list1基本上是1x4"矩阵" list2是一个1x3"矩阵"。
  • 我想制作一个4x3矩阵,为list1中每个元素与list2 <中每个元素的交集提供 长度 / LI>

以下是一些有效的示例代码,但当我的列表长度为数千时,它有点慢。

是否有更快/更好的方法?

谢谢!

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 个答案:

没有答案