• python 技巧


    排序

    尽量使用sorted不会改变原有数据

    student_tuples = [
            ('john', 'A', 15),
            ('jane', 'B', 12),
            ('dave', 'B', 10),
    ]
    
    student_objects = [
            Student('john', 'A', 15),
            Student('jane', 'B', 12),
            Student('dave', 'B', 10),
    
    
    from operator import itemgetter, attrgetter
    sorted(student_tuples, key=itemgetter(2,1)) # 多关键字排序
    sorted(student_objects, key=attrgetter('age'), reverse=True) # 逆序
    

    矩阵转置

    使用zip和map组合

    # -*-coding:utf-8-*-  
    array = [[1, 4], [2, 5], [3, 6]]
    print map(list, zip(*array))
    

    打开多文件

    with open(filename1, 'rb') as fp1, open(filename2, 'rb') as fp2, open(filename3, 'rb') as fp3:
        for i in fp1:
            j = fp2.readline()
            k = fp3.readline()
            print(i, j, k)
    

    深拷贝

    在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。
    浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制
    深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

    import copy
    a=[[1],[2]]
    b=copy.deepcopy(a)
    

    python3 中dict keys() 方法返回的不是list 需要list(d.keys())

    得到目前环境下的所有依赖

    pip freeze

    多维数据处理

    import numpy as np
    matrix = [[0]*5 for i in range(5)]
    data = np.arange(3*4*5).reshape(3,4,5)
    [[map(str,a) for a in b] for b in data]
    
  • 相关阅读:
    DIV+CSS布局一行两列问题(Repeater布局)
    JavaScript为DropDownList添加新项
    Indexof的实现
    父类子类构造函数的执行顺序
    微软算法面试题(2)
    Heaven on Earth
    阿里巴巴笔试题马尔科夫(HMM)的特征
    心灵净化启示录
    职场英语:开心工作的十二条秘诀
    MySql错误代码1045的解决方案
  • 原文地址:https://www.cnblogs.com/pigbreeder/p/8663889.html
Copyright © 2020-2023  润新知