• fluent pythonchap2


    1. 内置序列类型

    容器序列: list tuple collections.deque 可以存放不同类型的数据。 存放的是它们所包含的任意类型的对象的引用。

    扁平序列: str bytes bytearray memoryview  array.array 只能容纳一种类型,存放的是值而不是引用,是一段连续的内存空间,更加紧凑。

    PS.此处我还没找到方法,就是怎么验证扁平序列是一段连续的内存空间。

    列表推导式,尽量简单,代码不超过两行,python会忽略[],{},()内的续行符,因此可省略续行符\。

    元组拆封,使得元组可以完美地被当作记录来使用。

    具名元组namedtuple构建带字段名的元组和一个有名字的类,但是python并不会用__dict__来存放,这使得其内存消耗和元组是一样的。

    列表没办法想numpy的数组那样,直接乘一个数,放大多少倍,可以用列表推导式。

    test_str = [1,2,3,4,5,6,7]
    test_str1 = test_str*2
    print(test_str1)
    
    test_str = [i*2 for i in test_str]
    print(test_str)
    # healthy
    board = [['_']*3 for i in range(3)]
    
    # unhealthy
    w_board = [['_']*3]*3

      

    比较有趣的地方,两个id一样:

    l = [1,2,3]
    print(id(l))
    
    l*=2
    print(id(l))
    

      

    array.tofile和array.fromfile比文本文件读取速度快60倍,占用的字节数也比文本文件少一个数量级。

    from array import array
    from random import random
    floats = array('d',(random() for i in range(10**7)))
    fp = open('floats.bin','wb')
    floats.tofile(fp)
    fp.close()
    floats2 =array('d')
    fp = open('floats.bin','rb')
    floats2.fromfile(fp,10**7)
    fp.close()
    print(floats==floats2)
    

      

    memoryview没太看懂……

    sort,sorted,以及max, min函数有key参数,这个很有意思。

    ll = [32,28,'11','9',19,20,5]
    # sort as str
    lt = sorted(ll,key=str)
    print(lt)
    # sort as int
    lt2 = sorted(ll,key=int)
    print(lt2)
    

      

  • 相关阅读:
    VS2019基于windows类库创建单元测试报错解决方法
    scp 跨机远程拷贝
    java递归查询部门
    使用jOrgChart插件生成树形图
    让你页面上所有的非http请求强制转成https请求
    js对金额格式化————脑子不好使总忘
    去除相邻的重复元素 122345556 -> 123456
    打包时无法引入外部jar
    计算list里连续出现的值
    VirtualBox安装Centos双网卡(访问外网+固定IP)
  • 原文地址:https://www.cnblogs.com/jianyingzhou/p/15882813.html
Copyright © 2020-2023  润新知