gpt4 book ai didi

Python str View

转载 作者:IT王子 更新时间:2023-10-28 23:34:18 27 4
gpt4 key购买 nike

我有一个长约 1GB 的巨大 str:

>>> len(L)
1073741824

我需要从特定索引中取出许多字符串,直到字符串结束。在 C 中我会这样做:

char* L = ...;
char* p1 = L + start1;
char* p2 = L + start2;
...

但在 Python 中,对字符串进行切片会使用更多内存创建一个新的 str 实例:

>>> id(L)
140613333131280
>>> p1 = L[10:]
>>> id(p1)
140612259385360

为了节省内存,我如何创建一个实际上是指向原始 L 的指针的类似 str 的对象?

Edit:我们在 Python 2 和 Python 3 中有 buffermemoryview,但 memoryview 没有展示与 strbytes 相同的接口(interface):

>>> L = b"0" * 1000
>>> a = memoryview(L)
>>> b = memoryview(L)
>>> a < b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: memoryview() < memoryview()

>>> type(b'')
<class 'bytes'>
>>> b'' < b''
False
>>> b'0' < b'1'
True

最佳答案

有一个memoryview类型:

>>> v = memoryview('potato')
>>> v[2]
't'
>>> v[-1]
'o'
>>> v[1:4]
<memory at 0x7ff0876fb808>
>>> v[1:4].tobytes()
'ota'

关于Python str View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27013372/

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