从字符串末尾有效弹出子字符串

时间:2019-05-08 19:53:20

标签: python string slice

假设我的big_string的长度为n,我想从其结尾删除长度为k的子字符串

我们可以像big_string[:-k]一样来做,但这将是O(n-k),我们可以做得更好吗,像O(k)中那样?

1 个答案:

答案 0 :(得分:0)

如果您的字符串是py2 unicode或py3 str,则@MyNameIsCaleb指向的memoryview想法将不起作用,并且分片确实会创建副本,即O(n )。

可变类型(del m[-k:])的末尾修剪很快,但是只有字符串类型(不可变的)支持find()in和正则表达式之类的字符串操作。

如果修剪尾部是非常常见的操作,并且很少使用字符串操作或可以将其绑定到字符串的一小部分,那么将字符串一次转换为字符列表可能会很麻烦:

chars = [c for c in big_string]

要对有界部分使用字符串操作,可以将切片转换为字符串。例如,要确定在最近的1000个字符中是否出现“ foo”:

'foo' in ''.join(chars[-1000:])

相关问题