我正在尝试比较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中的相应位置。预先感谢。
答案 0 :(得分:1)
您可以先将list2
转换为集合以进行更有效的查找,然后使用enumerate
为list1
中的数组生成索引,然后测试数组中的项是否有其中的一组位于集合中,并输出它们的索引(使用next
在这里获得第一个):
set2 = set(list2)
index = next(i for i, a in enumerate(list1) for s in a if s in set2)