摘要:在指定位置刪除并返回這個數(shù)據(jù)項,注意這里是有返回項的。移除某一個特定數(shù)據(jù)項。第二章發(fā)布并上傳代碼到在查閱大量資料發(fā)布和上傳還有很多附屬文件需要編寫和上傳以確保模塊能夠正常發(fā)布和更新。包含函數(shù)串鏈,特點是中包含函數(shù)。
寫在前面:
“吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而致千里;假舟楫者,非能水也,而絕江河。君子生非異也,善假于物也。”
十幾年的默默學習,而今希望更多是對自己知識的一個總結反思積累,能夠探討進步更是求之不得。雖然現(xiàn)在coding能力有限,但所幸站在巨人肩膀上,可總有一天,我也能成為巨人。
一篇簡單python入門學習開始,作為自己千里之行第一步,sf.gg平臺的第一次嘗試。
python中的列表可以實現(xiàn)對各種數(shù)據(jù)的組織:
movies=["The Holy Grail","The life of brain","The meaning of life",2017,["dog","cat","duck"]]
包括數(shù)字,字符串和列表,但數(shù)字和字符的組合只能包含在字符串之中。
列表中數(shù)據(jù)項的調用:
print(movies[1]) 顯示"The life of brain"
下面列出一些關于list類列表的BIF:
len(movies)
輸出列表中的數(shù)據(jù)項個數(shù)。
movies.append("")
在列表末尾添加單個數(shù)據(jù)項。
movies.extend(["",""])
在列表末尾增加一個數(shù)據(jù)項集合。
movies.pop(n)
在指定位置刪除并返回這個數(shù)據(jù)項,注意這里是有返回項的。
movies.remove("")
移除某一個特定數(shù)據(jù)項。
insert("")
在特定位置增加一個數(shù)據(jù)項。
isinstance(name,list)
檢查某個標識符(name)是否屬于某種類型(例如list)。
list()
產(chǎn)生一個空列表的工廠函數(shù)。
range()
根據(jù)需要生成一個范圍的數(shù)字,常用于循環(huán)次數(shù)
int()
將一個字符串或一個數(shù)字轉換為整數(shù)
----自己入門一定是從點到面的,因此這里并不是很全面的總結,希望以后更加完善。
關于python中的邏輯迭代語句::
for each_file in movies: print(each_file)
其中 each_file 是我們自己為列表中的數(shù)據(jù)項定義的名字。
count = 0 while count < len(movies): print(movies[1]) count = count + 1
這里建議只要是能用for語句盡量用for語句。
判斷語句:
if isinstance(each_item,list): print(each_item) else: print("none")
這里與c語言并無明顯區(qū)別,多重判斷加入elif。
創(chuàng)建自定義函數(shù)def print_lol(the_list): xxxx xxxxx
自定義函數(shù)還有較多注意地方,在后續(xù)內容中有所提及。
第二章 發(fā)布并上傳代碼到pypi在查閱大量資料發(fā)布和上傳pypi還有很多附屬文件需要編寫和上傳以確保模塊能夠正常發(fā)布和更新。這里只寫了文中提到的能夠保證發(fā)布和上傳的最必要的幾個步驟,未來可能會專門寫一篇關于發(fā)布詳細文章。
發(fā)布1.為模塊傳建一個與模塊文件(.py)相同名字的文件夾(例如:cat),并把文件放進去。
2.創(chuàng)建setup.py文件
from distutils.core import setup setup( name = "cat", version = "1.0.0", py_modules = ["cat"], author = "davystokess", author_email = "xxxxx", url = "http://www.xxxx.com", description = "A simple example" )
setup文件是為你的模塊做出說明
3.發(fā)布 在此文件夾空白處 shift+右鍵 打開命令窗口輸入:
4.安裝到本地文件:
5.嘗試導入并使用模塊:
import cat cat.print_lol(xxx)
其中cat.print_lol涉及命名空間,如果使用
from cat import print_lol print_lol(xx)
則print_lol可以直接使用。
上傳到pypi書中的方法在我使用的3.6.2版本已經(jīng)無法使用(僅限本人)。這里使用官方推薦方式:
py -m pip install twine # 安裝twine,必須有py -m 前綴否則無法使用,具體啥意思我也不知道(待改) py -m twine upload dist/* #利用twine上傳
小體會:
(不保證完全正確)
上傳的模塊名字不能與已經(jīng)上傳的名字相同,否則會上傳失敗
上傳本人無法建立有效的.pypirc文件 因此每次上傳都需要輸入賬號密碼(待學習)
再上傳更新版本的時候需要模塊重新發(fā)布。但需要刪除dist文件夾的上一個版本的xxx.tar 文件否則會顯示上傳已經(jīng)存在
注釋有兩種(1)是 # 注釋一整行 (2)"""xxx"""注釋一段
對于函數(shù)使用具有缺省值的參數(shù)例如 def print_lol(the_list,level=0)
end=" "作為print函數(shù)參數(shù)可以關閉默認的自動換行
列表項目
第三章 文件與異常 文件文件的打開:
data = open(sketch.text,"wb")
sketch.text是某一個文件,方式有"r""rb""w""wb""w+""a"分別代表讀,二進制讀,寫二進制寫,讀和寫,追加寫入。注意data并不是一個列表,w會清空現(xiàn)有文件再寫入,沒有文件則會創(chuàng)建一個文件。
顯示python當前工作文件夾,更改工作文件夾:
import os os.getcwd() os chdir(F:codepython)
xxx.split(","n)
將xxx(一個數(shù)據(jù)項,或者一個列表等)中的數(shù)據(jù)依據(jù)","分為一個個數(shù)據(jù)項,n為分隔的個數(shù),n=1則意味著在第一個,處將數(shù)據(jù)分為兩半;不設置則有x個,分為x+1項的列表
xxx.readline()
讀取xxx一個數(shù)據(jù)行(待改)
xxx.find("n")
尋找xxx數(shù)據(jù)中是否存在n 是返回參數(shù):個數(shù)如10;否返回參數(shù)-1
xxx.seek()
用來是文件恢復到初始位置
not
將所得結果取反
xxx.close()
將文件關閉
舉例:
man=[] other=[] try: data=open("sketch.txt") for each_line in data: try: (role,line_spoken)=each_line.split(":",1) line_spoken= line_spoken.strip if role=="Man": man.append(line_spoken) elif role=="Other Man": other.append(line_spoken) except ValueError: pass data.close() except IOError: print("The data file is missing!") try: man_file=open("man_data.txt","w") other_file=open("other_data.txt","w") print(man,file=man_file) print(other,file=other_file) except IOError as err: print("File error:"+str(err)) #通過這種方式可以將問題反饋給我們,用來分析錯誤類型 finally: man_file.close() other_file.close()
try語句用來執(zhí)行正常模塊處理功能,except語句用來處理可能出現(xiàn)的錯誤:例如找不到指定文件或者數(shù)據(jù)類型不對等等;finally語句用來處理一定要執(zhí)行語句。
第四章 將數(shù)據(jù)保存到文件print("",file = file_name)
將數(shù)據(jù)寫入文件
try: with open("man_data.txt","w") as man_file: #注意形式 print_lol(man,fh=man_file) with open("other_data.txt","w") as other_file: print_lol(other,fh=other_file) except IOError as err: print("File error:"+str(err))
使用with open() as xxx:語句可以妥善文件的開關
import pickle try: with open("man_data.txt","wb") as man_file,open("other_data.txt","wb") as other_file: #注意創(chuàng)建儲存的文件是xxxx.pickle或xxx.txt格式都可以 pickle.dump(man,man_file) pickle.dump(other,other_file) except IOError as err: print("file error:"+str(err)) except pickle.PickleError as perr: print("Pickleing error:"+ste(perr)) new_man=[] with open("man_data.txt","rb") as man_file: new_man=pickle.load(man_file) print_lol(new_man)
呵呵 使用pickle.dump(數(shù)據(jù),文件名)可以將數(shù)據(jù)壓縮保存;使用pickle.load(數(shù)據(jù)名)可以將數(shù)據(jù)提取出來。注意寫,讀打開方式是wb和rb 。
第五章 處理數(shù)據(jù)def get_coach_data(filename): with open(filename) as f: data=f.readline() return(data.strip().split(",")) #方法串鏈 從左往右讀 特點以點為分隔,()中無包含關系
對于第五章的數(shù)據(jù)(只有計時數(shù)據(jù))進行處理 打開-讀取(變?yōu)榱斜淼挥幸豁棧浚?去空格-以","為分隔變?yōu)槎鄠€數(shù)據(jù)項的列表返回。
def sanitize(time_string): if "-" in time_string: splitter="-" elif ":" in time_string: splitter=":" else: return(time_string) (mins,secs)= time_string.split(splitter) return(mins+"."+secs)
自定義sanitize函數(shù)用于將數(shù)據(jù)中的"-"":"都變?yōu)?."。
print(sorted(set([sanitize(t) for t in james]))[0:3])
包含函數(shù)串鏈,特點是()中包含函數(shù)。一種寫代碼的方式:列表推導 自行體會。但其中的set()函數(shù)是將數(shù)據(jù)(無論是導入的還是列表數(shù)據(jù))轉換為一個集合,這樣就可以去除數(shù)據(jù)中的重復項。
當數(shù)據(jù)發(fā)生改變(增加或者減少類型)時,使用 字典 使用字典會非常方便:
def get_coach_data(filename): with open(filename) as f: data=f.readline().strip().split(",") data1={} data1["name"]=data.pop(0) data1["DOB"] =data.pop(0) data1["Times"]=str(sorted(set([sanitize(t) for t in data]))[0:3]) return(data1) sarah = get_coach_data("sarah2.txt") print(sarah["name"]+""s fastest time are:"+sarah["Times"]) # 對字典的調用例如sarah["name"],方式簡單實用。
這里面get_coach_data()函數(shù)創(chuàng)建并處理數(shù)據(jù)追中返回一個字典,對字典的調用。
但將數(shù)據(jù)與代碼打包在一起是更好的,函數(shù)與數(shù)據(jù)關聯(lián)才有意義,因此引入類的使用:
class Athlete: def __init__(self,a_name,a_dob=None,a_times= [ ]): # __init__這里一定要注意 兩個短橫線 self.name =a_name self.dob = a_dob self.times=a_times def top3(self): return(sorted(set([sanitize(t) for t in self.times]))[0:3]) def add_time(self,time_value): self.times.append(time_value) def add_times(self,list_of_times): self.times.extend(list_of_times)
這里涉及了‘定制類’的創(chuàng)建例子,注意其中的賦值與擴展方法。
def sanitize(time_string): if "-" in time_string: splitter="-" elif ":" in time_string: splitter=":" else: return(time_string) (mins,secs)= time_string.split(splitter) return(mins+"."+secs) #此處是重點 注意觀察一定制類的不同 class Athletelist(list): # 注意()中的是你將派生的類的類型 def __init__(self,a_name,a_dob=None,a_times= []): list.__init__([]) self.name =a_name self.dob = a_dob self.extend(a_times) def top3(self): return(sorted(set([sanitize(t) for t in self]))[0:3]) def get_coach_data(filename): with open(filename) as f: data = f.readline().strip().split(",") return(Athletelist(data.pop(0),data.pop(0),data)) #注意觀察類的調用方式 sarah = get_coach_data("sarah2.txt") print(sarah.name+""s fastest time are:"+str(sarah.top3())) vera= Athletelist("vera vi") vera.extend(["1.31","1-21","2:22"]) print(vera.top3())
這里涉及了子類的創(chuàng)建方法,不僅包含編寫的功能,還包含list本身的功能。
小結:
小小入門。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40813.html
摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進行了完善,當然也拖了不少時間。本書主要介紹的基本使用,這也是我一開始在學習過程中經(jīng)常用到的。第章實戰(zhàn),介紹了如何開發(fā)一個簡單的應用。聲明本書由編寫,采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書籍地址 head-f...
摘要:前前后后弄了一個星期,看書寫代碼,我寫出了一個基本能用的爬蟲小代碼,地址代碼注釋都很詳細了,其實只要直接閱讀源碼即可。然后我網(wǎng)上找了一下資料,發(fā)現(xiàn)很多人推薦這個庫,自己下來用了一下,發(fā)現(xiàn)真的很舒服,所以果斷采用了。 現(xiàn)在網(wǎng)絡爬蟲有很多方式可以寫,比如Node.js或者Go, 甚至PHP都行,我之所以選擇Python的原因是因為教程多,可以系統(tǒng)學習,因為光懂得使用Html選擇器來爬去頁面...
摘要:扔在一邊很久了,最近剛好有幾天閑,買了本復習一下。這是第一部分和數(shù)據(jù)處理。返回當前作用域下的本地變量。這個更好玩兒,模塊里面包含了異常和一些其他的對象。庫中變量是一個保存環(huán)境變量的字典,可以通過訪問字典值得方式獲得一些環(huán)境變量的值。 python扔在一邊很久了,最近剛好有幾天閑,買了本《Head First Python》復習一下。 跟python結緣是因為教C語言的王青老師推薦我們邊...
showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其實持久存儲不僅僅包含文件,還包括數(shù)據(jù)庫等,本章先介紹一部分,先熟悉一下。 熟悉python數(shù)據(jù) #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...
摘要:第一章學習流程圖安裝這里是用的,除了之外,和都自帶了,只是版本沒有這么新。是區(qū)分大小寫的。可以根據(jù)多維數(shù)組來理解。知識點補充里列表是打了激素的數(shù)組,意味著列表比數(shù)組更厲害,更好用。的語句的縮進是必須規(guī)范的。 head first python(第一章)--學習流程圖 showImg(http://source1.godblessyuan.com/blog_headfirstpytho...
閱讀 2696·2023-04-25 21:26
閱讀 1514·2021-11-25 09:43
閱讀 1949·2019-08-30 15:52
閱讀 932·2019-08-30 14:05
閱讀 2614·2019-08-29 16:10
閱讀 414·2019-08-29 13:48
閱讀 1860·2019-08-29 12:47
閱讀 1299·2019-08-23 18:04