繁体   English   中英

set大时搜索和检索包含部分字符串的set元素

[英]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

您使用列表理解的方法似乎非常好,实际上,它比使用listfilter还要快。 但是,如果您能够使用生成器而不是完整的过滤值列表,则filter本身比其他方法要快得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM