lie*_*los 2 python string slice
由于 python 会逐个复制,因此切片字符串的成本可能非常高。
我有一个对字符串进行操作的递归算法。具体来说,如果一个函数被传递了一个 string a,该函数会在a[1:]传递的 string上调用自己。问题在于字符串太长,逐个复制机制正在成为删除第一个字符的非常昂贵的方法。
a
a[1:]
有没有办法解决这个问题,还是我需要完全重写算法?
Sha*_*ger 5
一般来说,解决这个问题的唯一方法是让你的算法使用bytes类似类型, Py2str或 Py3 bytes;不支持Py2 unicode/ Py3 的视图str。我在我对相关问题的回答中提供了有关如何执行此操作的详细信息,但简短的版本是,如果您可以假设bytes类似参数(或转换为它们),则将参数包装在 a 中memoryview并进行切片是一个合理的解决方案。一旦转换为 a memoryview,切片会产生新的memoryviewsO(1)成本(在时间和内存方面),而不是O(n)文本切片的时间/内存成本。
bytes
str
unicode
memoryview
O(1)
O(n)
归档时间:
7 年,11 月 前
查看次数:
1844 次
最近记录: