base_review

简述Python的字符串驻留机制。

- 字符串驻留是一种仅保存一份相同且不可变字符串的方法。
   - 原理
      - 系统维护interned字典,记录已被驻留的字符串对象。
      - 当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1;
      - 若不存在,则记录a到interned中。
   - 优点
      - 在字符串比较时,节省大量内存。非驻留比较效率为o(n),驻留时比较效率为o(1)。
   - 驻留情况
      - 字符串只在编译时进行驻留,而非运行时。
      - 字符串长度为0和1时,默认都采用了驻留机制。
      - 字符串>1时,且只含大小写字母、数字、下划线时,才会默认驻留。
      - 用乘法得到的字符串
         - 乘数为1时
            - 仅含大小写字母、数字、下划线,默认驻留。
            - 含其他字符串
               - 长度<=1,默认驻留。
               - 长度>1,默认不驻留。
         - 乘数大于1时
            - 仅含大小写字母、数字、下划线,长度<=20,默认驻留
            - 仅含大小写字母、数字、下划线,长度>20,默认都不驻留
            - 其他字符串时,和长度无关,不驻留。
      - 字符串被sys.intern() 指定驻留。
      - [-5, 256]之间的整数数字,Python默认驻留。

现有字典d={'a': 26, 'g': 20, 'e': 20, 'c': 24, 'd': 23, 'f': 21, 'b': 25},请按照字中的 value字段进行排序.

print(dict(sorted(list(d.items()), key=lambda x: x[1])))

如何实现[‘1’,’2’,’3’]变成[1,2,3] ?

print(list(map(lambda x: int(x), ['1', '2', '3'])))
print([int(i) for i in ["1","2","3"]])

 

 py2项目如何迁移成py3

python3自带工具2to3.py 转换 python2.x 代码 到python3

位置在Python36/tool/script文件夹。

py 2to3.py -w d:/xxxx/xxx.py  

 

posted @ 2019-03-04 09:19  hnlmy  阅读(170)  评论(0编辑  收藏  举报