根据另一个列表元素获取一些列表元素索引

时间:2018-03-06 12:50:56

标签: python list lambda

我有两个清单:

a=['book','car','car','have']
b=['car','have']

我想要这个输出:

a_basedon_b_indexes=[1,2,3]# 'car' and 'have' indexes in list a

我想要这个输出的一行表达式。(我知道如何用for循环)。这可能在python中吗?

2 个答案:

答案 0 :(得分:4)

您可以在此

的列表理解中使用enumerate
>>> [i for i,j in enumerate(a) if j in b]
[1, 2, 3]

如果b很大,我建议使用set,因为in操作会更快

>>> b = {'car', 'have'}
>>> [i for i,j in enumerate(a) if j in b]
[1, 2, 3]

答案 1 :(得分:2)

IIUC,您可以迭代a中的每个元素,如果该元素位于b中,则存储索引。

配方很简单;

>>> b = set(b)
>>> [i for i, x in enumerate(a) if x in b]
[1, 2, 3]

使用set加快查找速度。