使用Python 3,我有一个包含超过100,000个字符串(list1)的列表,每个字符串长度最多为300个字符。我还有一个超过9百万个子字符串(list2)的列表——我想要计算出在list2中的子字符串在多少个元素中出现过。例如,
list1 = ['cat', 'caa', 'doa', 'oat']
list2 = ['at', 'ca', 'do']
我希望这个函数返回 (映射到list2):
[2, 2, 1]
通常情况下,这非常简单且需要很少的步骤。但是,由于列表的巨大大小,我遇到了效率问题。我希望找到最快的方法返回计数器列表。
我尝试过列表推导、生成器、映射、各种循环,但我还没有找到一个快速完成这个简单任务的方法。从理论上讲,最快的完成这个目标的方法是什么,最好能够在O(len(list2))
步骤内快速完成?
list1
和list2
进行索引,因此如果list1
的一个条目是“abcd”,则您不会检查list2
条目“efg”,而只会检查落在路径/分支下的“a”、“b”、“c”或“d”的list2
条目。 - puk