python如何取map中的元素_在Python中使用map()获取列表元素在字符串中存在的次数...

下面是对goalPost移动的一个响应(“我可能需要regex,因为在不久的将来我将需要单词分隔符”):

此方法解析文本一次,以获得所有“单词”的列表。每个单词都会在目标单词的字典中查找,如果是目标单词,则对其进行计数。所用的时间是O(P)+O(T),其中P是段落的大小,T是目标单词的数量。迄今为止,除我的Aho Corasick解决方案外,所有其他解决方案(包括当前接受的解决方案)均为O(PT)。在def counts_all(targets, paragraph, word_regex=r"\w+"):

tally = dict((target, 0) for target in targets)

for word in re.findall(word_regex, paragraph):

if word in tally:

tally[word] += 1

return [tally[target] for target in targets]

def counts_iter(targets, paragraph, word_regex=r"\w+"):

tally = dict((target, 0) for target in targets)

for matchobj in re.finditer(word_regex, paragraph):

word = matchobj.group()

if word in tally:

tally[word] += 1

return [tally[target] for target in targets]

findall版本比strawman版本慢得多。在

以下是当前接受的解决方案,它以标准化的形式表示,并添加了单词分隔符:

^{pr2}$

它在关闭时会越界,可能会减少到:# acknowledgement:

# this is structurally the same as one of hughdbrown's benchmark functions

def currently_accepted_solution_augmented_without_extra_closure(targets, paragraph):

def tester(x):

return len(re.findall(r"\b" + x + r"\b", paragraph))

return map(tester, targets)

目前接受的解决方案的所有变化都是O(PT)。与当前接受的解决方案不同,带有单词分隔符的regex搜索并不等同于简单的paragraph.find(target)。因为在本例中,re引擎不使用“快速搜索”,添加单词分隔符会将其从slow更改为非常slow。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值