比较python中的两种不同类型的列表并获取索引

时间:2018-09-27 04:18:41

标签: python-3.x

我正在尝试比较python中的两个列表并获取索引。但是这两个列表的格式不同。

list1:

[array(['apple'], 
       dtype='<U32'), array(['tim', 'out', 'over'], 
       dtype='<U32')array(['orange', 'oop'], 
       dtype='<U32'), , array(['senty', 'analys'], 
       dtype='<U32'), array(['context', 'analys'], 
       dtype='<U32'), array(['mis', 'report'], 
       dtype='<U32'), array(['man', 'wom'], 
       dtype='<U32'), array(['hospit', 'man', 'solv'], 
       dtype='<U32'), array(['big', 'dat', 'platform'], 
       dtype='<U32'), array(['hi', 'all'], 
       dtype='<U32'),  array(['analys'], 
       dtype='<U32')]


list2: 

['proact','man','apple',
 'stat','intellig',
 'algorithm','hol','hi','solv']

我必须检查list2中是否存在list1中的任何元素(未列出list1)和list1的相应索引。例如:list2中的list1中位于第6位。 list1[6]=['man','wom']。因此我必须获取索引6。所有元素都相似。在此示例中,它应返回[0,6,9]。因为apple,man和hi在list2中。因此它应该返回list1中的相应位置。预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以先将list2转换为集合以进行更有效的查找,然后使用enumeratelist1中的数组生成索引,然后测试数组中的项是否有其中的一组位于集合中,并输出它们的索引(使用next在这里获得第一个):

set2 = set(list2)
index = next(i for i, a in enumerate(list1) for s in a if s in set2)