迭代单个项目列表比迭代长字符串更快? #Python #Cherrypy
iterating a single item list faster than iterating a long string? #Python #Cherrypy
在使用 Cherrypy 时,我 运行 进入了这个注释行。 "strings get wrapped in a list because iterating over a single item list is much faster than iterating over every character in a long string."
这位于
https://github.com/cherrypy/cherrypy/blob/master/cherrypy/lib/encoding.py#L223
我在网上做了一些研究,但我仍然不完全理解将 response.body 包装为 [response.body] 的原因。 ?谁能告诉我这个设计背后的细节?
我认为只有当您认识到在带有该注释的代码之前,self.body
可以是单个字符串或包含许多字符串的可迭代序列时,该代码才有意义。其他代码将使用它作为后者(迭代它并用项目做字符串)。
虽然技术上可以让后面的代码循环处理单个字符串的字符,但逐个字符地处理数据可能效率不高。所以评论下面的代码将一个列表包裹在单个字符串周围,让它一次得到处理。
在使用 Cherrypy 时,我 运行 进入了这个注释行。 "strings get wrapped in a list because iterating over a single item list is much faster than iterating over every character in a long string." 这位于 https://github.com/cherrypy/cherrypy/blob/master/cherrypy/lib/encoding.py#L223 我在网上做了一些研究,但我仍然不完全理解将 response.body 包装为 [response.body] 的原因。 ?谁能告诉我这个设计背后的细节?
我认为只有当您认识到在带有该注释的代码之前,self.body
可以是单个字符串或包含许多字符串的可迭代序列时,该代码才有意义。其他代码将使用它作为后者(迭代它并用项目做字符串)。
虽然技术上可以让后面的代码循环处理单个字符串的字符,但逐个字符地处理数据可能效率不高。所以评论下面的代码将一个列表包裹在单个字符串周围,让它一次得到处理。