2019-09-17-23:09:48
今天学的内容是有关小数据池的,学的有点懵逼,感觉越来越难学了,但是得坚持下去
明天学习下一个课程时,感觉要跟不上,看来明天得先看好几遍今天的内容
不然肯定会听的懵逼
今天看见哔哩哔哩很多这样的视频,内容和我网上买的一样的,心塞啊!!!!!!!!!!!!
今天的内容:
一.重要知识点 1. is 和 == 区别 id()函数 == 判断两边的值 is 判断内存地址 #小数据池只针对整数、字符串、布尔值.其他的数据类型不存在驻留机制 2.当我们在控制台的时候,代码块与代码块之间的规则: 1.数字: -5~256之向的整数会被缓存 2.宇符串: 长度小于等于1会默认缓存 长度大于1,如果字符串中只有数字、字母、下换线缓存 乘法得到的字符串: 1.如果乘数是1. 和上面两个方案一致 2.乘数不是1.最终长度不能超过20 手动指定缓存 from sys import intern intern()制定缓存的内容 3.布尔值 3.py文件里, 一个代码块内部,只会缓存int, str, bool 也有自己的小数据池。 缓存的范围会比外面的代码块的数据池大 1. 数字。都会缓存。运算的结果不缓存(-5~256 会缓存) 2. 宇符串。默认的字符串都缓存,如果有乘法。 遵循上方的结论 3. 布尔值,默认缓存 回顾编码: 1. ASCII: 英文, 特殊字符, 数字, 8bit, 1byte 2. GBK: 中文 16bit, 2byte. 兼容ASCII 3. unicode: 万国码, 32bit 4byte. 兼容ASCII 4. UTF-8: 长度可变的unicode. 英文:8bit, 欧洲:16bit, 中文:24bit 3byte python2 只能用ASCII python3 有unicode, 默认的编码就是unicode 内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBK 2. encode() 编码. 获取到的是编码之后的结果. bytes 3. decode() 解码. 把bytes编程我们熟悉的字符串 二.错误总结 1.字符串的错误 li=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dict={} for el in li: if el<=66: if dict.get(‘k1‘)==None: dict[‘k1‘]=el #-->>这里是表示字符串(应该加上[]) else: dict[‘k1‘].append(el) #-->>字符串不可改变 else: if dict.get(‘k2‘)==None: dict[‘k2‘]=el #-->>这里是表示字符串 else: dict[‘k2‘].append(el) #-->>字符串不可改变 print(dict) #出现这个错误的原因是因为没有考虑到字符串是不可变的,没有连贯上以前学的内容,只以为今天的题目昨天的内容就可以解决 解决方法:加上[],以后每输入一个命令行,要去考虑它是什么 2.同上 s="k:1|k1:2|k2:3|k3:4" lst=[] lst=s.split("|") # print(lst) dict={} for c in lst: # print(c) k,v=c.split(":") #-->>这里一开始自己做没有加上k,v dict[k]=int(v) print(dict) #还是一样没有考虑到字符串的不可变 解决方法:重新回去再仔细看看前几天所学的内容,要学会连贯知识点 觉得还可以的代码
li=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dict={} for el in li: if el<=66: if dict.get(‘k1‘)==None: dict[‘k1‘]=[el] else: dict[‘k1‘].append(el) else: if dict.get(‘k2‘)==None: dict[‘k2‘]=[el] else: dict[‘k2‘].append(el) print(dict)
原文地址:https://www.cnblogs.com/hpcz190911/p/11537981.html
时间: 2024-10-29 12:56:21