从Python中的字符串创建重叠子串列表的最快方法

从Python中的字符串创建重叠子串列表的最快方法,第1张

概述我正在尝试生成给定字符串中所有重叠n长度子串的列表. 例如,对于6的n和字符串“hereismystring”,我将生成列表[“hereis”,“ereism”,“reismy”,…,“string”].我正在使用的琐碎代码现在看起来像这样: n = 6l = len(string)substrings = [string[i:(i + n)] for i in xrange(l - n + 我正在尝试生成给定字符串中所有重叠n长度子串的列表.

例如,对于6的n和字符串“hereismystring”,我将生成列表[“hereis”,“ereism”,“reismy”,…,“string”].我正在使用的琐碎代码现在看起来像这样:

n = 6l = len(string)substrings = [string[i:(i + n)] for i in xrange(l - n + 1)]

很容易.问题是,我想加快速度(我有很多非常长的字符串). Python中有更快的技术吗?考虑到Python的字符串例程无论如何都会在C中下载到Cython帮助吗?

作为参考,这种技术在我的机器上需要大约100us(一个新的Macbook Pro),对于500长度的字符串和n为30.

我在这里先向您的帮助表示感谢!

解决方法 从Python编码技术最快的问题退一步,我会以不同的方式解决问题.由于所有字符串都是相同的长度,并且都来自单个源字符串,为什么不直接使用字符范围,而不是将它们转换为正确的字符串?您可以避免大量的分配和复制,但是您必须调整代码才能知道每个“字符串”的长度为n个字符.

换句话说,当您想要使用子字符串时,只需直接从源字符串中读取范围.您将尽可能快地处理所需的字符,因为它们可以从缓存中提取.您可以将“子字符串”表示为源字符串中的偏移量.

有时,如果你想要超快的性能,你必须留下熟悉的数据结构.只是一个想法.

总结

以上是内存溢出为你收集整理的从Python中的字符串创建重叠子串列表的最快方法全部内容,希望文章能够帮你解决从Python中的字符串创建重叠子串列表的最快方法所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存