[英]searching and retrieving set elements containing partial string when set is large
我正在处理约10亿行的大型数据集。 我把它们作为set
。
我的任务是挑选出包含工作'risk'
那些行。
所以,我用
a = [sent for sent in sent_set if 'risk' in sent]
有没有更好,更快(更多pythonic)的方法呢?
我这里有一个使用数字而不是文本的示例,因为这对于我来说更容易演示。
import time
mySet = set(range(1000000))
clock = time.perf_counter()
a = [x for x in mySet if x % 5 == 3]
print(time.perf_counter() - clock)
clock = time.perf_counter()
b = list(filter(lambda x: x % 5 == 3, mySet))
print(time.perf_counter() - clock)
clock = time.perf_counter()
c = filter(lambda x: x % 5 == 3, mySet)
print(time.perf_counter() - clock)
0.09295209999999998
0.14730990000000002
3.400000000042258e-06
您使用列表理解的方法似乎非常好,实际上,它比使用list
和filter
还要快。 但是,如果您能够使用生成器而不是完整的过滤值列表,则filter
本身比其他方法要快得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.