Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代单个项目列表比迭代长字符串快#Python#Cherrypy_Python_Cherrypy - Fatal编程技术网

迭代单个项目列表比迭代长字符串快#Python#Cherrypy

迭代单个项目列表比迭代长字符串快#Python#Cherrypy,python,cherrypy,Python,Cherrypy,在使用Cherrypy时,我遇到了这个评论行。“字符串被包装在列表中,因为迭代单个项目列表要比迭代长字符串中的每个字符快得多。” 这是位于 我在网上做了一些研究,但我仍然不完全理解将response.body包装为[response.body]的原因?有人能告诉我这个设计背后的细节吗 我认为只有当您认识到在使用该注释的代码之前,self.body可以是单个字符串,也可以是包含多个字符串的iterable序列时,代码才有意义。其他代码将使用它作为后者(对其进行迭代并对项目执行字符串处理) 虽然从技

在使用Cherrypy时,我遇到了这个评论行。“字符串被包装在列表中,因为迭代单个项目列表要比迭代长字符串中的每个字符快得多。” 这是位于
我在网上做了一些研究,但我仍然不完全理解将response.body包装为[response.body]的原因?有人能告诉我这个设计背后的细节吗

我认为只有当您认识到在使用该注释的代码之前,
self.body
可以是单个字符串,也可以是包含多个字符串的iterable序列时,代码才有意义。其他代码将使用它作为后者(对其进行迭代并对项目执行字符串处理)


虽然从技术上讲可以让后面的代码在单个字符串的字符上循环,但逐个字符处理数据可能效率低下。因此,注释下面的代码围绕单个字符串包装了一个列表,让它一次处理完。

你是说解码?我仍然不知道进程(['sameblarblar'])如何比进程('sameblarblar')更快。假设评论是正确的,答案必须在于“流程”处理输入的方式。但具体来说,它是什么?问这个问题的另一种方式是,在什么情况下,将字符串放在列表中可以避免“遍历字符串A”的劳动。使用您给出的相同示例,如果您需要在“lotsofsuff”中为“thing”:做这件事,那么在['lotsofsuff'中为“thing”做“for”对您有什么好处:现在您仍然需要处理“stuff”#没有转义,只有一个额外的步骤”??在代码中,主体必须是“basestring”(cherrypy 3)或“text_或_bytes”(cherrypy 5)。因此,它不是将['a'、'b'、'c']或['abc']与'a'进行比较,而是将['a']和'a'进行比较。文件中使用self.body的其他位置都对self.body:中的块进行了
。也就是说,它在主体上循环,并期望得到字符串形式的
s(它通常测试该行是否为循环第一行的文本)。如果只有一个大块,那么它对每个块所做的操作可能会比有多个单字符块时更有效。不过,这可能不会有太大的性能差异,所以我不知道我会花费太多精力来学习该代码的这个实现细节。非常感谢。我认为这可能是唯一的解释。