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]