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]

posted on 2018-03-28 15:02  猪的饲养员  阅读(132)  评论(0编辑  收藏  举报

导航