I Z*_*I Z 1 python string lookup scalability string-matching
我手头有一个相当简单的任务:给定一个(小写的)big字符串和一个(小写的)字符串数组,small如果所有small字符串都在字符串中,我需要产生1 big,否则为0.所以这样做的pythonic方法就是:
>>> big = 'the quick brown fox jumps over the lazy dog'
>>> smallTrue = ["quick","dog","fox"]
>>> smallFalse = ["quick","fox","wolf"]
>>> int(all([s in big for s in smallTrue]))
1
>>> int(all([s in big for s in smallFalse]))
0
Run Code Online (Sandbox Code Playgroud)
问题在于是否有一种不同的方法可以使得0和1更好地扩展到更长的bigs(显然更长)(想想"典型"科学论文的摘要)加上大量small更长的数组?
缩放意味着处理时间,因为我的机器有很多RAM.因此,如果我需要以某种方式预处理数据,这将需要更多的RAM,这将是好的.
问的原因是因为我遇到了一些类似字符串操作任务的可伸缩性问题.
只需删除方括号,您将拥有一个生成器而不是list理解.它将被懒惰而不是急切地评估,避免内存问题.
all(s in big for s in smallTrue)
Run Code Online (Sandbox Code Playgroud)
此外,你可能并不需要int()调用,因为bool是的一个子类int,与True和False代表1,并0分别.你甚至可以用它们做数学.