標籤:讀書筆記 編程 python 工作
資料結構
python中兩大主力資料結構是列表和字典。列表按順序儲存資料,而字典像小型資料庫,使用鍵高效的儲存和檢索資料。
type函數可以檢查值或變數的資料類型。
序列是一組按順序排列的值,python中有3種內建的序列類型:字串、元組和列表。第一個正索引為0,指向左端。第一個負索引為-1,指向右端。也可使用切片標記法複製子序列,例如s[begin:end]從索引begin複製到end-1的元素。可使用+和*進行拼接,要進行拼接序列的類型必須相同,不能元組和列表進行拼接。可使用len函數進行計算長度。運算式xin s檢查序列s是否包含元素x,如果包含返回True否則返回False。
元組
元組是一種不可變序列,包含零個或更多個值。元組用圓括弧括起,其中元素用逗號分隔。如果要修改元組,就必須建立一個體現更改的新元組。如果需要頻繁修改就將元組換成列表。單元素元組後面必須有逗號分隔。
x in tup#如果x是tup的元素返回Truelen(tup)#元組tup包含的元素數tup.count(x)#元素x在元組tup中出現的次數tup.index(x)#元組tup中第一個元素x的索引
列表
列表是可變的,可在不複製的情況下,添加、刪除或修改列表元素。列表用方括弧括起其中元素用逗號分隔,列表可包含任何類型的值,空列表用[]表示。在處理列表的程式尋找錯誤時,通常必須明白列表元素指向其值,而不是包含它們。當列表中有元素指向自身時,python能夠識別出自引用。函數reverse不會製作列表的拷貝,而是直接刪除列表的元素,因此我們說反轉是就地完成的。
s.append()#在列表s末尾添加元素xs.count()#返回元素x在列表s中出現的次數s.extend(lst)#將lst中所有元素都添加到s中s.index(x)#返回第一次x的索引s.insert(i,x)#將元素x插入到索引i指定的元素前面,結果s[i]== xs.pop(i)#刪除並返回s中索引為i的元素s.remove(x)#刪除s中的第一個x元素s.reverse()#反轉s中元素的排列順序s.sort()#將s中的元素按升序排列
列表解析,也可使用列表解析進行篩選
n*n for n in range(1,11)2*n+7 for n in range(1,11)n**3 for n in range(1,11)n for n in nums if n>0c for c in s if c.lower()c for c in s if c.lower() not in ‘aeiou’
字典
在儲存鍵值對方面,python字典是一個效率極高的資料結構。字典也稱為關聯陣列、散列表。字典利用了一個巧妙的編程訣竅-散列。從本質上說,字典的每個鍵值都被轉換為一個數字-散列值。訪問值時將提供的鍵值轉換為散列值,再跳到列表相應的位置上。
字典中的鍵必須是獨一無二的,而且鍵是不可變的。如果你預先不知道某個值是否包含在字典中,可使用keyin d進行檢查。如果key包含在字典d中則返回True。
d.items()#返回一個由字典d的索引值對組成的視圖d.keys()#返回一個由字典d的鍵組成的視圖d.values()#返回一個由字典d的值組成的視圖d.get(key)#返回與key相關聯的值d.pop(key)#刪除鍵key並返回與之想關聯的值d.popitem()#返回字典d中的某個索引值對d.clear()#刪除字典d的所有元素d.copy()#複製字典dd.fromkeys(s,t)#建立一個新字典,其中的鍵來自s,值來自td.setdefault(key,v)#如果key包含在字典d中則返回其值,否則返回v並將(key,v)添加到字典d中。d.update(e)#將e中的索引值對添加到字典d中,e可能是字典,也可以是索引值對序列。
集合
集合是一系列不重複的元素。集合類似於字典,但只包含鍵,而沒有相關聯的值。集合分兩類:可變集合和不可變集合。集合最常用的的功能就是刪除序列中的重複元素。
輸入和輸出
python提供了強大的基本檔案I/O支援。
設定字串格式x= 1/81print(x) #0.0123456790123print(‘value:%.2f’%x)#0.01print(‘value:%.5f’%x)#0.01235
d整數o八進位x小寫十六進位X大寫十六進位e小寫科學計數法浮點數E大寫科學計數法浮點數F浮點數s字串%%字元
也可以使用format函數進行字串的格式整理。‘my{0} has {1}’.format(‘dog’,’fleas’)輸出:’mydog has fleas’‘1/81= {x}’.format(x = 1/81)輸出:’1/81= 0.0123456790123’‘num= {x:.{d}f}’.format(x = 1/81,d = 3)輸出:’num= 0.012’‘num= {x:.{d}f}’.format(x = 1/81,d = 4)輸出:’num= 0.0123’
可以通過其設定精度,如果這都滿足不了你,那麼還有最後一招了,模組啊,可以使用Cheetah模組或者Django模組。
讀寫檔案
檔案是一個命名的位元集合,儲存在硬碟、U盤、記憶體條等輔助存放裝置中。檔案分為兩類:文字檔和二進位檔案。其中前者本質上是儲存在磁碟中的字串,後者是其他各種內容。
os.getcwd()#返回當前工作目錄的名稱os.listdir(p)#返回一個字串列表,其中包含路徑p指定的檔案夾中所有檔案名稱os.chdir(p)#將當前工作目錄設定為路徑pos.path.isfile(p)#當路徑p指定的是一個檔案的名稱,返回Trueos.path.isdir(p)#當路徑p指定的是一個檔案夾的名稱,返回Trueos.stat(fname)#返回有關fname的資訊,如大小和最後一次
如果只是想獲悉當前工作目錄下的.py檔案,可使用下方的函數。
def list_py(path = None): if path == None:<pre name="code" class="html"> path= os.getcwd()<pre name="code" class="html"> return[fname for fname in os.listdir(path) if os.path.isfile(fname) if fname.endswith(‘.py’)]
返回當前工作目錄中所有檔案的大小總和。
def size_in_bytes(fname): return os.stat(fname).st_sizedef cwd_size_in_bytes(): total= 0 for name in files_cwd(): total= total + size_in_bytes(name) return total
處理文字檔
逐行讀取文字檔
#r讀取w寫入a在檔案末尾輸入b二進位模式t文字模式+為讀寫開啟檔案def print_file1(fname): f= open(fname,’r’) for line in f: print(line,end= ‘’) f.close()
f.read()#讀取檔案f.write(‘helloworld! \n’)#寫入檔案f.seek(0)#讓檔案指標指向檔案開頭
pickle
pickle.dump將資料結構儲存到磁碟中,之後可以使用pickle.load從磁碟擷取資料結構。
讀取網頁
通過urllib模組
python編程入門讀書筆記2