gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:23:19 27 4
gpt4 key购买 nike

我正在尝试生成给定字符串中所有重叠的 n 长度子字符串的列表。

例如,对于 n 的 6 和字符串 "hereismystring" 我会生成列表 ["hereis", "ereism", "reismy ", ..., "字符串"]。我现在使用的简单代码如下所示:

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

很简单。问题是,我想加快速度(我有很多很长的字符串)。 Python 中有更快的技术吗?考虑到 Python 的字符串例程无论如何都在 C 中,那么转向 Cython 会有帮助吗?

作为引用,对于长度为 500 的字符串和 n 为 30,此技术在我的机器(一台新的 Macbook Pro)上大约需要 100us。

提前感谢您的帮助!

最佳答案

从哪种 Python 编码技术最快的问题上退一步,我会以不同的方式处理这个问题。由于所有字符串的长度都相同,并且都来自同一个源字符串,为什么不直接使用字符范围,而不是将它们转换为适当的字符串呢?您将避免大量分配和复制,但您必须调整代码以了解每个“字符串”的长度为 n 个字符。

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

有时,如果您想要超快的性能,就必须抛开熟悉的数据结构。只是一个想法。

关于python - 从 Python 中的字符串创建重叠子字符串列表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com