70個注意的Python小Notes
作者:白寧超
2018年7月9日10:58:18
摘要:在閱讀python相關書籍中,對其進行簡單的筆記紀要。旨在注意一些細節問題,在今後專案中靈活運用,並對部分小notes進行程式碼標註。(本文原創,轉載註明出處:Python讀書筆記:70個注意的小Notes )
《Python讀書筆記》
1 python始終記錄變數最新值。
2 變數應簡短且具有描述性,如student_name等。
3 變數名推薦小寫。
4 單雙引號括起來的,字串可以包含引號和撇號。用法:”this`s a cup”
5 title()將每個單詞的首字母都改為大寫。用法:str.title()
6 upper()將字串轉化為大寫。用法:str.upper()
7 lower()將字串轉化為小寫。用法:str.lower()
8 空白泛指任何非列印字元。如空格、製表符和換行符。
9 rstrip()剔除字串末尾空白。用法:str.rstrip()
10 lstrip()剔除字串開頭空白。用法:str.lstrip()
11 strip()剔除字串兩端空白。用法:str.strip()
12 Python使用兩個稱號表示乘方。用法:3 ** 2
13 程式設計理念。Python之禪:import this
14 list中使用逗號來分割其中的元素。
15 list索引-1返回最後一個元素列表,-2以此類推。用法:list[-3:]
16 list[0] = `update` 修改列表元素
17 list.append(`add`) 列表中新增元素
18 list.insert(0.`insert`) 列表中指定位置插入元素
19 del list[0] del元素刪除list元素
20 newlist = list.pop()方法pop()刪除元素
21 從列表中刪除元素且不再使用用del方法,刪除元素後還有可能用選擇pop()
22 list.remove(`element`) 根據值移除第一個指定的元素,可接著使用。
23 sort()列表按照字母永久性排序。如:list.sort()
24 sort()列表按照字母相反的排序。如:list.sort(reverse=True)
25 reverse() 反轉列表元素排序。用法:list.reverse()
26 for迴圈遍歷時候選擇有意義的名稱。用法: for cat in cats:
27 range() 生成一系列數字。用法: numbers= list(range(1,11,2))
28 list的內建統計函式。用法:min(list)/max(list)/sum(list)
29 python的切片功能。用法: list[0:3]/list[:]/list[-3:]/list[:9]
30 list複製。用法:new_foods = old_food[:]
31 元組包括一些列不可修改的元素且用圓括號標識。用法:tulple = (2,3)
32 檢查是否相等時不考慮大小寫。用法:str.lower() == `somestr`
33 使用and檢查多個條件。用法:condition1>=1 and condition2>=2 and …
34 使用or檢查多個條件。用法:condition1>=1 or condition2>=2 or …
35 使用多個列表。用法:
list1 = [`1`,`2`,`3`,`4`] list2 = [`1`,`4`] for l2 in list2: if l2 in list1: go() else: pass
36 比較運算子兩邊各新增空格,便於可讀性。用法:if age > 40:
37 dict修改值,用法:dict[`key`] = value
38 dict刪除鍵值對,用法: del dict[`key`]
39 字典的遍歷,用法:
for key,value in dict.items(): for key in dict: for key in dict.keys(): for value in dict.values(): for value in set(dict.values()): # 遍歷字典的無重複值
40 字典列表,用法:
dict1 = [`key1`:`values1`,`key2`:`values2`] dict2 = [`key1`:`values3`,`key2`:`values4`] dict3 = [`key1`:`values5`,`key2`:`values6`] dicts = [dict1,dict2,dict3] for dict in dicts: pass
41 字典中儲存列表,用法:
dict1 = {`key1`:`values1`,`key2`:[`values1`,`values2`]} for dict in dict1[`key2`]:
42 字典中儲存字典,用法:
dicts = { `keys1`:{`key1`:`values1`,`key1`:`values2``key1`:`values3`}, `keys2`:{`key2`:`values2`,`key2`:`values2``key2`:`values3`} }
43 input接收使用者輸入,用法:message = input(`user input some values!`)
44 %取模運算判斷奇偶,用法:
if (4 % 3) == 0: print(`偶數`): else: print(`奇數`)
45 while迴圈的常規用法:
current_number = 1 while current_number <= 10: print(`current_number`) current_number += 1
46 while迴圈使用標誌的用法:
flag = True while flag: message = input(prompt)
47 列表之間移動元素,用法:
while list[]: newlist.append(list[].pop())
48 刪除特定的元素,用法:
while element in list: list.remove(element)
49 形參與實參的理解,用法:
def method(username): # username形參 method(`zhangsan`) # zhangsan實參
50 位置引數,用法:
def describe(name,age): describe(`zhangsan`,22) # 引數位置對應傳遞
51 關鍵字實參是傳遞函式的名稱-值對,用法:
def describe(name,age): describe(name=`zhangsan`,age=22) # 關鍵字實參 describe(age=22,name=`zhangsan`) # 關鍵字實參,位置不重要
52 形參設定預設值,用法:def describe(name=`lisi`,age):
53 返回值,用法:
def describe(name=`lisi`,age): des = name + str(age) return des # 可以返回字典、列表等形式
54 列表引數,用法:
lists = [`huangsan`,`lisi`,`wangjun`,`denghui`] def cats_name(lists): for list in lists: print("`my love is : `+list".title())
55 傳遞任意引數,用法:def cats_name(*cats): # 可以傳遞多個形參
56 位置實參和任意數量實參:
def cats_name(parament1,parament2,*cats): # 可以傳遞多個形參 cats_name(para1,para2,para3,para4,...)
57 任意實參和關鍵字實參,用法:(cats.py)
def cats_name(parament1,parament2,**cats): # 可以傳遞多個形參 cats_name(para1,para2,para3,newname=para4,...)
58 匯入整個模組,用法:
import cats cats.cats_name(para1,para2,para3,newname=para4,...)
59 匯入特定的函式,用法:from nltk import map_tag as mt
60 匯入模組所有函式,用法:from nltk import *
61 形參預設時,兩邊不能為空,用法:def function_name(parament_0,parament_1=`default`)
62 類的命名是駝峰型即首字母大寫。
63 __init__(self,papa1,para2):避免python預設方法跟普通方法名稱衝突,self必不可少,必須位於其他形參的前面,指向例項本身。
64 類的繼承,用法:
# 父類 class Animal(): def __init__(self,name,age): self.name = name self.age = age def animal_call(self): print(`this is `+self.name.title()+` call.`) # 子類 class Cat(Animal): def __init__(self,name,age,color): super().__init__(name,age) self.color =color def cat_color(self): my_color = `the cat is `+self.color print(my_color) return my_color if __name__ == `__main__`: cat = Cat(`tom`,22,`blue`) cat.animal_call() strs=cat.cat_color()
65 幾種類的匯入方式,用法:
from cat import Cat # 匯入單個類 from cat import Animal,Cat # 匯入多個類 from cat # 匯入整個模組 from cat import * # 匯入所有類
66 讀取文字檔案,並刪除字串始末空白,用法:my_str = line.strip()
67 opem()自動建立檔案路徑,若路徑不存在時候。
68 異常程式碼塊:try-except
69 split()建立單詞列表
str = `this is a string` str.split() [`this`,`is`,`a`,`string`]
70 儲存資料json.dump()和json.load()
import json # 父類 class Animal(): def __init__(self,name,age): self.name = name self.age = age def animal_call(self): print(`this is `+self.name.title()+` call.`) # 子類 class Cat(Animal): def __init__(self,name,age,color): super().__init__(name,age) self.color =color def cat_color(self): my_color = `the cat is `+self.color print(my_color) return my_color if __name__ == `__main__`: cat = Cat(`tom`,22,`blue`) cat.animal_call() strs=cat.cat_color() filename = r`../AllProject/V4.0EngInfoExtract/Document/EnPapers_single/test.json` with open(filename,`w`) as f_obj: json.dump(strs,f_obj) with open(filename,`r`) as f_obj: strs = json.load(f_obj) print(strs)
附加matplotlib相關操作:
71 matplotlib繪製圖表,plot繪製折線圖
import matplotlib import matplotlib.pyplot as plt #加入中文顯示 import matplotlib.font_manager as fm # 解決中文亂碼,本案例使用宋體字 myfont=fm.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc") def line_chart(xvalues,yvalues): # 繪製折線圖,c顏色設定,alpha透明度 plt.plot(xvalues,yvalues,linewidth=10,alpha=0.5,c=`red`) # num_squares資料值,linewidth設定線條粗細 # 設定折線圖示題和橫縱座標標題 plt.title("Python繪製折線圖",fontsize=30,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`縱座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,labelsize=14) # 顯示圖形 plt.show()
72 matplotlib繪製圖表,scatter繪製散點圖
def scatter_chart(xvalues,yvalues): # 繪製散點圖,s設定點的大小,c資料點的顏色,edgecolors資料點的輪廓 plt.scatter(xvalues,yvalues,c=`green`,edgecolors=`none`,s=40) # 設定散點圖示題和橫縱座標標題 plt.title("Python繪製折線圖",fontsize=30,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`縱座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,which=`major`,labelsize=10) # 設定每個座標軸取值範圍 plt.axis([80,100,6400,10000]) # 顯示圖形 plt.show() # 自動儲存圖表,bbox_inches剪除圖片空白區 # plt.savefig(`squares_plot.png`,bbox_inches=`tight`)
73 Pygal生成可縮略的向量圖檔案
def histogram(xvalues,yvalues): # 繪製直方圖 hist = pygal.Bar() # 設定散點圖示題和橫縱座標標題 hist.title = `事件頻率的直方圖` hist.x_title = `事件的結果` hist.y_title = `事件的頻率` # 繪製氣溫圖,設定圖形大小 fig = plt.figure(dpi=128,figsize=(10,6)) # 事件的結果 hist.x_labels = xvalues # 事件的統計頻率 hist.add(`事件`,yvalues) # 儲存檔案路徑 hist.render_to_file(`die_visual.svg`)
74 讀取csv檔案顯示折線圖
def temper_char(): dates,highs,lows = [],[],[] with open(r`../../../AllProject/PyProject/weather07.csv`) as f: reader = csv.reader(f) header_row = next(reader) # 返回檔案第一行 # enumerate 獲取元素的索引及其值 # for index,column_header in enumerate(header_row): # print(index,column_header) for row in reader: current_date = datetime.strptime(row[0],"%Y-%m-%d") dates.append(current_date) highs.append(int(row[1])) lows.append((int(row[3]))) # 接收資料並繪製圖形,facecolor填充區域顏色 plt.plot(dates,highs,c=`red`,linewidth=4,alpha=0.5) plt.plot(dates,lows,c=`green`,linewidth=4,alpha=0.5) plt.fill_between(dates,highs,lows,facecolor=`blue`,alpha=0.2) # 設定散點圖示題和橫縱座標標題 plt.title("日常最高氣溫,2018年7月",fontsize=24,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`溫度`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 繪製斜的日期 fig.autofmt_xdate() # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,which=`major`,labelsize=15) # 顯示圖形 plt.show()
75 Github最受歡迎的星標專案視覺化
def repos_hist(): #檢視API速率限制 # url = https://api.github.com/rate_limit # 執行github API呼叫並儲存響應 url = `https://api.github.com/search/repositories?q=language:python&sort=stars` r = requests.get(url) print("Status code:",r.status_code) # 狀態碼200表示成功 # 將API響應儲存在一個變數裡面 response_dict = r.json() print("Hithub總的Python倉庫數:",response_dict[`total_count`]) # 探索有關倉庫的資訊 repo_dicts = response_dict[`items`] names,stars = [],[] for repo_dict in repo_dicts: names.append(repo_dict[`name`]) stars.append(repo_dict[`stargazers_count`]) # 視覺化,x_label_rotation圍繞x軸旋轉45度,show_legend圖例隱藏與否 my_style = LS(base_style=LCS) my_config = pygal.Config() my_config.x_label_rotation=45 # 橫座標字型旋轉角度 my_config.show_legend=False my_config.title_font_size=24 # 標題大小 my_config.label_font_size=14 # 副標題大小,縱橫座標資料 my_config.major_label_font_size = 18 # 主標籤大小,縱座標5000整數倍 my_config.truncate_label=15 # 專案名稱顯示前15個字 my_config.show_y_guides=False # 隱藏水平線 my_config.width=1200 # 自定義寬度 # chart = pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False) chart = pygal.Bar(my_config,style=my_style) chart.title = `Github最受歡迎的星標專案` chart.x_labels = names chart.add(`星標`,stars) chart.render_to_file(`python_repos.svg`)
完整的matplotlib視覺化
import matplotlib import matplotlib.pyplot as plt import pygal from pygal.style import LightColorizedStyle as LCS, LightStyle as LS import csv from datetime import datetime import requests #加入中文顯示 import matplotlib.font_manager as fm # 解決中文亂碼,本案例使用宋體字 myfont=fm.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc") def line_chart(xvalues,yvalues): # 繪製折線圖,c顏色設定,alpha透明度 plt.plot(xvalues,yvalues,linewidth=10,alpha=0.5,c=`red`) # num_squares資料值,linewidth設定線條粗細 # 設定折線圖示題和橫縱座標標題 plt.title("Python繪製折線圖",fontsize=30,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`縱座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,labelsize=14) # 顯示圖形 plt.show() def scatter_chart(xvalues,yvalues): # 繪製散點圖,s設定點的大小,c資料點的顏色,edgecolors資料點的輪廓 plt.scatter(xvalues,yvalues,c=`green`,edgecolors=`none`,s=40) # 設定散點圖示題和橫縱座標標題 plt.title("Python繪製折線圖",fontsize=30,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`縱座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,which=`major`,labelsize=10) # 設定每個座標軸取值範圍 plt.axis([80,100,6400,10000]) # 顯示圖形 plt.show() # 自動儲存圖表,bbox_inches剪除圖片空白區 # plt.savefig(`squares_plot.png`,bbox_inches=`tight`) def histogram(xvalues,yvalues): # 繪製直方圖 hist = pygal.Bar() # 設定散點圖示題和橫縱座標標題 hist.title = `事件頻率的直方圖` hist.x_title = `事件的結果` hist.y_title = `事件的頻率` # 繪製氣溫圖,設定圖形大小 fig = plt.figure(dpi=128,figsize=(10,6)) # 事件的結果 hist.x_labels = xvalues # 事件的統計頻率 hist.add(`事件`,yvalues) # 儲存檔案路徑 hist.render_to_file(`die_visual.svg`) def temper_char(): dates,highs,lows = [],[],[] with open(r`../../../AllProject/PyProject/weather07.csv`) as f: reader = csv.reader(f) header_row = next(reader) # 返回檔案第一行 # enumerate 獲取元素的索引及其值 # for index,column_header in enumerate(header_row): # print(index,column_header) for row in reader: current_date = datetime.strptime(row[0],"%Y-%m-%d") dates.append(current_date) highs.append(int(row[1])) lows.append((int(row[3]))) # 接收資料並繪製圖形,facecolor填充區域顏色 plt.plot(dates,highs,c=`red`,linewidth=4,alpha=0.5) plt.plot(dates,lows,c=`green`,linewidth=4,alpha=0.5) plt.fill_between(dates,highs,lows,facecolor=`blue`,alpha=0.2) # 設定散點圖示題和橫縱座標標題 plt.title("日常最高氣溫,2018年7月",fontsize=24,fontname=`宋體`,fontproperties=myfont) plt.xlabel(`橫座標`,fontsize=20,fontname=`宋體`,fontproperties=myfont) plt.ylabel(`溫度`,fontsize=20,fontname=`宋體`,fontproperties=myfont) # 繪製斜的日期 fig.autofmt_xdate() # 設定刻度標記大小,axis=`both`引數影響橫縱座標,labelsize刻度大小 plt.tick_params(axis=`both`,which=`major`,labelsize=15) # 顯示圖形 plt.show() def repos_hist(): #檢視API速率限制 # url = https://api.github.com/rate_limit # 執行github API呼叫並儲存響應 url = `https://api.github.com/search/repositories?q=language:python&sort=stars` r = requests.get(url) print("Status code:",r.status_code) # 狀態碼200表示成功 # 將API響應儲存在一個變數裡面 response_dict = r.json() print("Hithub總的Python倉庫數:",response_dict[`total_count`]) # 探索有關倉庫的資訊 repo_dicts = response_dict[`items`] names,stars = [],[] for repo_dict in repo_dicts: names.append(repo_dict[`name`]) stars.append(repo_dict[`stargazers_count`]) # 視覺化,x_label_rotation圍繞x軸旋轉45度,show_legend圖例隱藏與否 my_style = LS(base_style=LCS) my_config = pygal.Config() my_config.x_label_rotation=45 # 橫座標字型旋轉角度 my_config.show_legend=False my_config.title_font_size=24 # 標題大小 my_config.label_font_size=14 # 副標題大小,縱橫座標資料 my_config.major_label_font_size = 18 # 主標籤大小,縱座標5000整數倍 my_config.truncate_label=15 # 專案名稱顯示前15個字 my_config.show_y_guides=False # 隱藏水平線 my_config.width=1200 # 自定義寬度 # chart = pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False) chart = pygal.Bar(my_config,style=my_style) chart.title = `Github最受歡迎的星標專案` chart.x_labels = names chart.add(`星標`,stars) chart.render_to_file(`python_repos.svg`) # print(`檢視每個python倉庫的資訊: `) # for repo_dict in repo_dicts: # print(`專案名稱:`,repo_dict[`name`]) # print(`所有者:`,repo_dict[`owner`][`login`]) # print(`星級評分:`,repo_dict[`stargazers_count`]) # print(`專案URL:`,repo_dict[`html_url`]) # print(`倉庫描述:`,repo_dict[`description`]) # print(` `) # 研究第一個倉庫 # repo_dict = repo_dicts[0] # print(` Key:`,len(repo_dict)) # for key in sorted(repo_dict.keys()): # print(key) # 處理結果 # print(response_dict.keys()) if __name__ == `__main__`: xvalues = list(range(1,100)) #校正座標點,即橫座標值列表 yvalues = [x**2 for x in xvalues] # 縱座標值列表 x_result = [1,2,3,4,5,6] y_frequencies = [152,171,175,168,150,179] # line_chart(xvalues,yvalues) # scatter_chart(xvalues,yvalues) # histogram(x_result,y_frequencies) # temper_char() repos_hist()
Numpy主要操作
import numpy from numpy import array from numpy import mat,matrix from numpy import shape # 檢視矩陣或陣列的方法 from numpy import multiply # 元素相乘 import random def nu_add(): mm = array((1,1,1)) pp = array((2,2,2)) rr = mm + pp**3 # 陣列的和運算 rr1 = mm * pp # 陣列相乘 print(rr) print(rr1) def nu_matrix(): ss = mat([1,2,3]) # 矩陣 mm = matrix([1,2,3]) print(`an element: `.title()+str(mm[0,0])) # 訪問矩陣中的單個元素 print(`Number of dimensions of mm `.title()+str(shape(mm))) print(`mat is equal matrix: `.title()+str(ss==mm)) print(`Matrix multiplication: `.title()+str(ss*mm.T)) # 矩陣相乘需要進行轉置 print(`Multiplication of elements: `.title()+str(multiply(mm,ss))) # mm每個元素和ss每個元素相乘 def nu_list_mat(): pylist = [1,2,3] rr = mat(pylist) # 列表轉化成矩陣 print(`list values: `.title()+str(pylist)) print(`rr type: `.title()+str(type(rr))) print(`mat values: `.title()+str(rr)) def nu_mean(): dd = mat([4,5,1]) rr = dd.mean() # 矩陣的均值 print(`mean of dd: `.title()+ str(rr)) def nu_mul_array(): jj = mat([[1,2,3],[8,8,8]]) print(`Number of dimensions of jj `.title()+str(shape(jj))) one_row = jj[1,0:2] print(one_row) def nu_tran_mat(): # 矩陣轉置 radMat = numpy.random.random((3,3)) print(`Before matrix transposition: `+str(radMat)) print(`After matrix transposition: `+str(radMat.T)) def nu_inverse_mat(): # 矩陣的逆 radMat = numpy.random.random((3,3)) print(`Before matrix inverse: `+str(radMat)) print(`After matrix inverse: `+str(mat(radMat).I)) def nu_mat_mul_imat(): # 矩陣與其逆矩陣相乘 bmat = mat(numpy.random.random((3,3))) imat = bmat.I rus = bmat * imat print(rus) # 結果是3*3的單位矩陣,其位置原則應該都是0,實際中是非常小的數,這個計算機處理的問題 if __name__ == `__main__`: # nu_add() # nu_matrix() # nu_list_mat() # nu_mean() # nu_mul_array() # nu_tran_mat() # nu_inverse_mat() nu_mat_mul_imat()
http://www.cnblogs.com/baiboy
相關文章
- Python讀書筆記:需要注意的70個小問題Python筆記
- Notes中有關C++API的注意事項 (轉)C++API
- Python閉包的兩個注意事項Python
- 微信小程式開發需要注意的29個坑微信小程式
- 微信小程式開發需要注意的30個坑微信小程式
- Python中Lambda使用要注意的幾個地方Python
- Python import 時要注意的幾個問題PythonImport
- 第 70 期 Go 中不常注意的各種細節集錦Go
- 8個關於Python的小技巧Python
- 30個有關Python的小技巧Python
- RAC 一個節點,5個小時產生了70多個G的trace ,把oracle目錄撐滿了Oracle
- Lotus Notes開發中的14個經驗
- Lotus Domino/Notes Toolkits綜述(九) 小結 (轉)
- 70個Python經典實用練手專案(附原始碼)Python原始碼
- 30個Python常用小技巧Python
- Python開發的10個小貼士Python
- 初入職場的小夥伴請注意,這 8 個坑不要再踩了
- 外貿開發客戶的70個渠道
- Python中使用字典的幾個小技巧Python
- 提高Python執行效率的5個小技巧!Python
- 提高python開發效率的10個小技巧Python
- Notes中幾個處理多值域的通用函式函式
- Python 潮流週刊#70:微軟 Excel 中的 Python 正式釋出!(摘要)Python微軟Excel
- 70 行 Python 程式碼編寫一個遞迴下降解析器Python遞迴
- 70個經典的 Shell 指令碼面試問題指令碼面試
- python2的朋友們注意!!!Python
- input在python中的使用注意Python
- python字典合併的使用注意Python
- python私有方法的使用注意Python
- python中__new__的使用注意Python
- Notes與Office的介面
- python導包注意Python
- 除錯使用了函式模組的程式時需要注意的一個小問題除錯函式
- Mongodb NotesMongoDB
- Typora Notes
- ACM notesACM
- 你需要注意的Java小細節(一)Java
- coleifer/huey:python 的一個小任務佇列Python佇列