20170605初學筆記之python

2021-08-02 04:09:06 字數 2663 閱讀 2336

csv文字格式的讀寫

對元組中的資料進行集體處理

ctypes庫的使用

python函式的效能分析

*操作符的使用

讀寫函式由python自帶庫csv提供,無論讀寫,均需要建立讀寫物件。以下為**

import csv

class

csvapi

(object):

def__init__

(self,file):

self._file = file

defwrite

(self,headers,rows,mode='w'):

with open(self._file,mode) as f:

f_csv = csv.writer(f) #建立寫物件

f_csv.writerow(headers) #將頭部資訊寫入

for i in range(len(rows)):

f_csv.writerow(rows[i])#將內容列表寫入

defread

(self,mode='r'):

rows =

with open(self._file,mode) as f:

f_csv = csv.reader(f)#建立讀物件,該物件為可迭代的生成器

headers = next(f_csv)#讀取第一行,即頭

for row in f_csv:

return headers,rows#返回列頭和資料

if __name__ == '__main__':

headers = ["id","name","age"]

rows = [(1,'xiaoming',19),(2,'xiaohong',20)]

csvobj = csvapi('data.csv')#建立物件

csvobj.write(headers,rows)#寫入資料

headers_1,rows_1 = csvobj.read()#讀出資料

print headers_1,rows_1

#輸出的結果:["id","name","age"],[('1','xiaoming','19'),('2','xiaohong','20')]

以上**基本可以處理大部分csv檔案,具體對資料的處理只需再新增方法即可。同時如果需要將資料讀取成字典格式,直接將csv.reader改為csv.dictreader即可。如需將字典寫入csv格式,需使用如下**

f_csv = csv.dictwriter(f,headers)

f_csv.writeheader()

f_csv.writerows(rows)

從1中的執行結果中看到,讀取出的資料均變成了字串格式。挨個處理顯然很麻煩,我們可以根據python中萬物皆物件的特性,生成函式列表對元組資料進行處理。**如下:

field_type = [int,str,int]

row = [convert(value) for

convert,value

in zip(field_type,row)]#zip將兩個列表一一對應打包成元組

field_types = dict(zip(headers,field_type))#將元組轉為字典

row.update((key,convert(row[key]))for key,convert

in field_types)

此處**中的field_type即將工廠函式形成列表,對元組中的資料進行依次處理。如果需要對元組中的資料進行不同的處理,可建構函式列表,使用for迴圈進行處理。

此庫的使用在網上找到了很多說明,但最終發現真正還是python官方文件比較全面。所以在使用乙個新庫的時候,盡量去看官方文件。

該項目的使用主要是結構體陣列的使用。c結構體在python中使用如下**所示,其中point為指標型別

class

rect

(structure):

_fields_ = [("upperleft", point),

("lowerright", point)]

結構體陣列為rectarraytype = rect*length,其中length為陣列長度。生成資料放入到c介面呼叫函式中。

最簡單最有效雖然看起來有點麻煩的方法,在執行時使用以下命令執行

python -m cprofile ***x.py
此處會獲取所有呼叫資訊,並輸出所有呼叫資訊的時間消耗。測試c介面的效能可直接檢視呼叫函式所消耗的時間即可。因不太了解內部構造,暫作為可行方案,待後續學習

在函式呼叫過程中遇到了要將乙個元組的內容依次作為函式的引數,使用*操作符可將元組內容依次傳入,類似*args和**kwargs(需要去學習一下這倆引數是啥玩意)。**栗子如下

def

func

(id,name,age):

pass

a = (1,'xiaoming',19)

func(*a) #使用*操作符取出元組中的資料作為引數依次傳入

每條知識筆記都是乙個坑需要填。

加油吧少女!

初學彙編之筆記

開始學習彙編2天了,開始時還不太理解這門語言.感覺從高階語言過度到彙編還是很不適應的,組合語言和高階語言最大的不同就是能更直接的操縱硬體.這也是組合語言能聲生生不息的原因吧 第1天的學習可以說沒有什麼效果,腦袋完全亂了,可能沒有作好從高階語言到低階語言過度的心理準備 第2天繼續看發現開始明白了,之前...

java web初學筆記之

pagecontext作用域 當前頁面,也就是只要跳轉到別的頁面就失效了。如果把變數放到pagecontext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。其生命週期即把該變數放到pagecontext開始到jsp頁面結束。如果num變數是pagecontext作用域的,則當訪問...

py學習筆記

1.切片 list l l 2 4 l 1 10 2 同matlab l 複製 tuple 0,1,2,3,4 0 3 字串2.print 預設換行 print x 不換行print x,print y,orprint x,y 3.變數賦值 不需要型別宣告 gg 100.0 i,lov,u 233,...