计算数组python中每个子字符串的数量

计算数组python中每个子字符串的数量,第1张

概述我有一个字符串数组,例如[a_text,b_text,ab_text,a_text].我想获得包含每个前缀的对象数量,例如[‘a_’,’b_’,’ab_’],因此’a_’对象的数量将为2. 到目前为止,我一直在通过过滤数组来计数每个数,例如num_a = len(filter(lambda x:x.startswith(‘a_’),array)).我不确定这是否比循环遍历所有字段并递增每个计数器要 我有一个字符串数组,例如[a_text,b_text,ab_text,a_text].我想获得包含每个前缀的对象数量,例如[‘a_’,’b_’,’ab_’],因此’a_’对象的数量将为2.

到目前为止,我一直在通过过滤数组来计数每个数,例如num_a = len(filter(lambda x:x.startswith(‘a_’),array)).我不确定这是否比循环遍历所有字段并递增每个计数器要慢,因为我正在为我计数的每个前缀过滤数组. filter()等函数比for循环更快吗?对于这种情况,如果我使用for循环,我不需要构建过滤列表,这样可以使它更快.

也许我可以使用列表理解来使其更快,而不是过滤器?

解决方法 您可以将collections.Counter与正则表达式一起使用(如果所有字符串都有前缀):

from collections import Counterarr = ['a_text','b_text','ab_text','a_text']Counter([re.match(r'^.*?_',i).group() for i in arr])

输出:

Counter({'a_': 2,'b_': 1,'ab_': 1})

如果不是所有字符串都有前缀,则会抛出错误,因为re.match将返回None.如果这是可能的,只需添加一个额外的步骤:

arr = ['a_text','a_text','test']matches = [re.match(r'^.*?_',i) for i in arr]Counter([i.group() for i in matches if i])

输出:

Counter({'a_': 2,'ab_': 1})
总结

以上是内存溢出为你收集整理的计算数组python中每个子字符串的数量全部内容,希望文章能够帮你解决计算数组python中每个子字符串的数量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存