我正在尝试获取列表中每个项目在 Python 中的字符串中的次数:
paragraph = "I eat bananas and a banana"
def tester(x): return len(re.findall(x,paragraph))
map(tester, ['banana', 'loganberry', 'passion fruit'])
返回 [2, 0, 0]
但是我想做的是扩展它,这样我就可以将段落值输入到 map() 函数中。现在,tester() 函数已经对段落进行了硬编码。有没有人有办法做到这一点(也许制作一个长度为 n 的段落值列表)?还有其他想法吗?
请记住,每个数组值在未来的某个时间点都会有一个权重 - 因此需要将这些值保存在一个列表中,而不是将它们一起处理。
更新:段落通常为 20K,列表通常有 200 多个成员。我的想法是 map 并行运行 - 因此它比任何串行方法都更有效率。
请您参考如下方法:
闭包是一个快速的解决方案:
paragraph = "I eat bananas and a banana"
def tester(s):
def f(x):
return len(re.findall(x,s))
return f
print map(tester(paragraph), ['banana', 'loganberry', 'passion fruit'])
