python 技巧

排序

儘可能使用sorted不會改變原有數據python

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組合code

# -*-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]
相關文章
相關標籤/搜索