, если вы хотите использовать списочное понимание, используйте что-то вроде этого
[i for i in a if i in b]
, которое выводит
>>> a = [1, 2, 4]
>>> b = [3, 1, 5, 2]
>>> [i for i in a if i in b]
[1, 2]
>>> b = [1, 2, 4]
>>> a = [3, 1, 5, 2]
>>> [i for i in a if i in b]
[1, 2]
Или используйте решение @ Chris_Rand's Clean set:
>>> a = [1, 2, 4]
>>> b = [3, 1, 5, 2]
>>> list(set(a).intersection(b))
[1, 2]
Так как я первоначально думал, что название говорит о понимании списка, я дал вам ответ о понимании списка.Вы должны абсолютно использовать решение Криса, хотя.
Вот (не статистически значимый) тест, показывающий, почему
>>> a = list(np.random.randint(0, 10000, size=500))
>>> b = list(np.random.randint(0, 10000, size=800))
>>> timeit.timeit(stmt='[i for i in a if i in b]', globals=globals(), number=1000)
9.176704404999327
>>> timeit.timeit(stmt='list(set(a).intersection(b))', globals=globals(), number=1000)
0.05484662300295895