Python:创建两个元素为数字集的列表的交集长度矩阵
我正在使用Python3.5,我想知道是否有更有效的方法来实现这一点Python:创建两个元素为数字集的列表的交集长度矩阵,python,matrix,set,matrix-multiplication,set-intersection,Python,Matrix,Set,Matrix Multiplication,Set Intersection,我正在使用Python3.5,我想知道是否有更有效的方法来实现这一点 我有两个列表(list1和list2) 每个列表中的每个元素都是一组数字 在下面的示例中,list1基本上是一个1x4“矩阵,list2是一个1x3“矩阵” 我想制作一个4x3矩阵,给出list1中每个元素与list2中每个元素交集的长度 下面是一些有效的示例代码,但是当我的列表长度达到数千时,它会有点慢 有没有更快/更好的方法 谢谢大家! list1 = [{1,2,3}, {4,5,6}, {1,2,9}, {4,5,
- 我有两个列表(
和list1
)李>list2
- 每个列表中的每个元素都是一组数字
- 在下面的示例中,
基本上是一个1x4“矩阵,list1
是一个1x3“矩阵”list2
- 我想制作一个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]]
您已经拥有的看起来是同步进行的最有效的方法。如果需要更快,请考虑使用多重处理并行化。尝试使用<代码> NUMPY < /代码>。它具有许多用于处理矩阵优化的功能:<代码> MyOutPutsMatx= = [Lin(L1和L2在List2L2中)用于List1]中的L1 < /代码>。虽然你希望在计时方面有更大的进步,但我认为这实际上是直接的矩阵乘法,一旦将输入转换为实际矩阵,
1
表示特定输入集中存在特定数字,0
表示不存在。@user2357112我没有这样想过,但你是对的。将每个集合转换为“完整”向量可能是值得的。也许那样更快。谢谢