python字符串索引访问的时间复杂度?

lan*_*nza 9 python string python-3.x

如果我没弄错的话,Python字符串存储在unicode标量中.但是,unicode标量可以组合形成其他字形簇.因此,使用内存排量start + scalarSize * nstring[n]是不是你要找的答案.

这是否意味着Python在每个标量中线性迭代以获得您正在寻找的标量?如果你有

word = 'caf' + char(65) + char(301) #café
Run Code Online (Sandbox Code Playgroud)

Python是否将其存储为五个标量,并在继续之前迭代检查是否应该组合任何标量,还是在插入时运行检查并存储"纯"标量?

编辑:我用另一种语言混淆了Python.Python print()打印出字形集群,但str无论你如何输入它们,Python都会存储标量.因此,两个组合标量将打印为一个字形集群,该集群可能与另一个标量集群相同.当你去打电话时,string[0]你会得到插入字符串的标量.

use*_*ica 7

Python字符串索引不考虑字素簇。它按Unicode代码点工作。我认为Python实际上并没有内置任何与字素簇一起使用的东西。

字符串索引花费的时间是恒定的,但是如果您要检索第n个字素簇,字符串索引将无法为您完成。

(人们有时建议对字符串应用规范的构图,但是在规范的构图之后,仍然有很多可能的字素簇仍然占据多个代码点。)

  • @ sepp2k:不。他们不是。在字符串中,代码点以固定宽度格式存储;该格式是每个代码点1字节,2字节还是4字节,取决于字符串。 (4认同)
  • Python 3 字符串不是 utf-8 编码的吗?如何在 O(1) 时间内从 utf-8 字符串中检索代码点? (3认同)