first = [(1, text, text, 1, 2, 3),
(1, text, text, 1, 0, 3), ... (6054, text, text, 2, 2, 3)]
second = (1, 2, 3, 4, 5 ... 5412)
有更快的方法吗:
data = [x for x in first if x[0] in second]
答案 0 :(得分:6)
试试这个:
first = [(1, text, text, 1, 2, 3),
(1, text, text, 1, 0, 3), ... (1054, text, text, 2, 2, 3)]
second = (1, 2, 3, 4, 5 ... 5412)
second_set = set(second)
data = [x for x in first if x[0] in second_set]
假设第一个有m个元素,第二个有n个元素。
集合经过哈希处理,因此搜索它们接近O(1),总效率为O(m)。在列表中搜索第二个是O(n),其总效率为O(m * n)。
答案 1 :(得分:1)
也许您只想要这个而不是in
支票:
data = [x for x in first if 1 <= x[0] <= 5412 ]