<p>我手头有一个相当简单的任务:给定一个(小写)<code>big</code>字符串和一个(小写)<code>small</code>字符串数组,如果所有<code>small</code>字符串都在<code>big</code>字符串中,我需要生成1,否则生成0。所以Python式的方法就是:</p>
<pre><code>>>> 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
</code></pre>
<p>问题是,是否有一种不同的方法来获取0和1,以便更好地扩展到更长的<code>big</code>个数(想想一篇“典型”科学论文的摘要)和更长的一大组<code>small</code>数组?你知道吗</p>
<p>缩放意味着处理时间,因为我的机器有很多内存。所以如果我需要以某种方式对数据进行预处理,那就需要更多的RAM了。你知道吗</p>
<p>之所以问这个问题,是因为我在执行类似的字符串操作任务时遇到了一些可伸缩性问题。你知道吗</p>
<p>在字符串中查找字符串总是很慢的。如果拆分为大的,然后在生成器上运行all(),则应该可以提高性能</p>
<pre><code>big_set = set(big.split(' ')) # you get O(1) lookup on a set
return all(s in big for s in smallTrue)
</code></pre>