交叉列表求交集是一个很简单的操作,使用set函数即可,例子如下
a=[1,2,3,4,5,6,7,8,9]
b=[4,5,1,2,9,8]
print(set(a)&set(b))
>>>>{1, 2, 4, 5, 8, 9}
但是有些时候是需要求出这个交集在一个列表里面对应的索引的,如何求出对应的索引呢?比如求列表a和b的交集在列表a中的索引,方法是把列表a的索引和数据设置为一个字典,然后使用set函数交叉这个字典与列表b,最后输出对应的字典就行了,例子如下:
ind_dict = dict((k,i) for i,k in enumerate(a))
inter = set(ind_dict)&set(b)
indices = [ ind_dict[x] for x in inter ]
print(indices)
>>>>[0, 1, 3, 4, 7, 8]
其中enumerate函数可以把数组或者list的索引和数据组合成一个字典输出来