对于Python总和,为什么不字符串呢?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python总和怎么求,并且为您提供关于json_encode()函数为什么不能解析带中文的JSON字
对于Python总和,为什么不字符串呢?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python总和怎么求,并且为您提供关于json_encode()函数为什么不能解析带中文的JSON字符串呢?、python post提交到服务器登陆,使用json数据,为什么不成功呢?、python – 为什么可变字符串比不可变字符串慢?、Python 中没有多行 Lambda:为什么不呢?的宝贵知识。
本文目录一览:- Python总和,为什么不字符串呢?(python总和怎么求)
- json_encode()函数为什么不能解析带中文的JSON字符串呢?
- python post提交到服务器登陆,使用json数据,为什么不成功呢?
- python – 为什么可变字符串比不可变字符串慢?
- Python 中没有多行 Lambda:为什么不呢?
Python总和,为什么不字符串呢?(python总和怎么求)
Python具有内置函数sum
,实际上等效于:
def sum2(iterable, start=0): return start + reduce(operator.add, iterable)
适用于所有类型的参数(字符串除外)。它适用于数字和列表,例如:
sum([1,2,3], 0) = sum2([1,2,3],0) = 6 #Note: 0 is the default value for start, but I include it for clarity sum({888:1}, 0) = sum2({888:1},0) = 888
为什么特地省去了弦乐?
sum( [''foo'',''bar''], '''') # TypeError: sum() can''t sum strings [use ''''.join(seq) instead] sum2([''foo'',''bar''], '''') = ''foobar''
我似乎还记得在Python列表中进行讨论的原因,因此可以使用一个解释或指向该解释的线程的链接。
编辑 :我知道标准方法是这样做"".join
。我的问题是为什么禁止对字符串使用sum的选项,而列表却没有禁止。
编辑2 :尽管我认为给出所有好的答案都 不需要这样做 ,但问题是:
为什么sum在一个可迭代的包含数字或一个可迭代的包含列表而不在一个可迭代的包含字符串上起作用?
答案1
小编典典Python试图阻止您“添加”字符串。您应该加入他们的行列:
"".join(list_of_strings)
它快得多,并且使用的内存更少。
快速基准:
$ python -m timeit -s ''import operator; strings = ["a"]*10000'' ''r = reduce(operator.add, strings)''100 loops, best of 3: 8.46 msec per loop$ python -m timeit -s ''import operator; strings = ["a"]*10000'' ''r = "".join(strings)''1000 loops, best of 3: 296 usec per loop
编辑(回答OP的编辑):关于为什么字符串显然是“单一”的,我相信这只是针对常见情况进行优化以及实施最佳实践的问题:您可以使用’‘更快地连接字符串。加入,因此明确禁止使用字符串sum
会向新手指出。
顺便说一句,此限制已“永远存在”,即,由于将限制sum
添加为内置功能(修订版32347)
json_encode()函数为什么不能解析带中文的JSON字符串呢?
这样就有值:
这样就返回NULL:
为什么出现这种情况呢?该怎么解析带中文的JSON字符串呢?
回复讨论(解决方案)
json中的中文都被转码了:
json中的中文都被转码了:
PHP code
$p = array("name"=>"成龙",array("age"=>55,"cur"=>"电影"));
$p_json = json_encode($p);
echo $p_json."
";
#{"name":"\u6210\u9f99","0":{"age":55,"cur":"\u7535\u5f71"}}
#\u6210\……
那它也应该能出来东西啊,不能是NULL吧
在你的编辑器中把字符集改为utf-8
文件编码 utf-8 或者 iconv 自己再转
在你的编辑器中把字符集改为utf-8
嗯好了,谢谢啊!
不能解析中文,我设置了utf-8
python post提交到服务器登陆,使用json数据,为什么不成功呢?
请教各位,python 用post请求登陆,使用的是json,没弄明白!
import httplib import json import urllib conn = httplib.HTTPConnection("http://192.168.1.104:8080") headers = {"Content-type":"application/json"} param = ({"type":"2","loginName":"13983643100","password":"6aa5e3cc0678b335a9547f60045baa6b","systemVersion":"6.1.2"}) conn.request("POST" ,"/linkup_base/user/login.mlk",json.JSONEncoder().encode(param), headers) response = conn.getresponse() data = response.read(200000) print(data) conn.close()刚刚学习python,提交到服务器报错,如下
Traceback (most recent call last): File "C:/Documents and Settings/Administrator/PycharmProjects/untitled/login.py", line 12, in <module> conn.request("POST" ,"/linkup_base/user/login.mlk?",postData, headers) File "C:\Python27\lib\httplib.py", line 973, in request self._send_request(method, url, body, headers) File "C:\Python27\lib\httplib.py", line 1007, in _send_request self.endheaders(body) File "C:\Python27\lib\httplib.py", line 969, in endheaders self._send_output(message_body) File "C:\Python27\lib\httplib.py", line 829, in _send_output self.send(msg) File "C:\Python27\lib\httplib.py", line 791, in send self.connect() File "C:\Python27\lib\httplib.py", line 772, in connect self.timeout, self.source_address) File "C:\Python27\lib\socket.py", line 553, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno 11001] getaddrinfo failed
python – 为什么可变字符串比不可变字符串慢?
编辑:
>>> import UserString ... def test(): ... s = UserString.MutableString(''Python'') ... for i in range(3): ... s[0] = ''a'' ... ... if __name__==''__main__'': ... from timeit import Timer ... t = Timer("test()","from __main__ import test") ... print t.timeit() 13.5236170292 >>> import UserString ... def test(): ... s = UserString.MutableString(''Python'') ... s = ''abcd'' ... for i in range(3): ... s = ''a'' + s[1:] ... ... if __name__==''__main__'': ... from timeit import Timer ... t = Timer("test()","from __main__ import test") ... print t.timeit() 6.24725079536 >>> import UserString ... def test(): ... s = UserString.MutableString(''Python'') ... for i in range(3): ... s = ''a'' + s[1:] ... ... if __name__==''__main__'': ... from timeit import Timer ... t = Timer("test()","from __main__ import test") ... print t.timeit() 38.6385951042
我认为很明显为什么我在第二次测试中放入s = UserString.MutableString(‘Python’).
解决方法
拥有不可变字符串可能并确实允许在Java和Python中进行非常大量的优化.例如,如果字符串被散列,则哈希值可以被缓存,并且永远不必重新计算(因为字符串不能更改) – 这在使用散列字符串的Python中尤其重要(对于集合中的查找)和词典)如此奢华甚至“幕后”.新鲜的副本永远不需要“以防万一”,前一个副本在此期间发生了变化 – 只要需要该字符串,就可以系统地分发对单个副本的引用. Python还大量使用(某些)字符串的“实习”,可能允许进行常数时间比较和许多其他类似的快速操作 – 将其视为一种更多方式,一种更先进的方法,以利用字符串的不变性缓存更多经常对它们执行的操作的结果.
当然,这并不是说给定的编译器会利用所有可能的优化.例如,当请求一个字符串切片时,不需要创建一个新对象并复制数据 – 新切片可能引用具有偏移量(以及独立存储长度)的旧切片,可能对于大字符串的一个很好的优化,其中采取了许多切片. Python没有这样做,因为除非在内存管理中特别小心,否则这可能很容易导致“大”字符串在实际只需要一小部分时保留在内存中 – 但这是一个权衡不同的实现可能肯定会选择执行(具有额外内存管理的负担,确保 – 对于所讨论的假设语言更复杂,更难以调试的编译器和运行时代码).
我只是在这里摸索 – 如果在可变和不可变版本中可以存在可互换的字符串类型,那么很多这些优点将很难保持(我怀疑是为什么,至少就我目前的知识而言,C编译器实际上并不打扰这种优化,尽管通常非常注重性能).但是通过仅提供不可变的字符串作为原始的基本数据类型(因此当你真的需要一个可变的字符时隐含地接受一些缺点;-),诸如Java和Python之类的语言可以明显地获得各种优势 – 性能问题只是其中的一组(例如,Python只允许不可变基元类型可选择的选择不是以性能为中心的设计决策 – 它更多地是关于集合和字典行为的清晰度和可预测性! – ).
Python 中没有多行 Lambda:为什么不呢?
我听说它说不能在 Python 中添加多行 lambda,因为它们会在语法上与 Python
中的其他语法结构发生冲突。我今天在公共汽车上考虑这个问题,并意识到我想不出一个与多行 lambda 冲突的 Python
构造。鉴于我非常了解该语言,这让我感到惊讶。
现在,我确信 Guido 有理由不在语言中包含多行 lambda,但出于好奇:在什么情况下包含多行 lambda 会模棱两可?我听说的是真的,还是
Python 不允许多行 lambda 的其他原因?
今天关于Python总和,为什么不字符串呢?和python总和怎么求的分享就到这里,希望大家有所收获,若想了解更多关于json_encode()函数为什么不能解析带中文的JSON字符串呢?、python post提交到服务器登陆,使用json数据,为什么不成功呢?、python – 为什么可变字符串比不可变字符串慢?、Python 中没有多行 Lambda:为什么不呢?等相关知识,可以在本站进行查询。
本文标签: