keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...
P1: 零基礎程序設計(Python 入門)
carolinezhq:【Python】數(shù)據(jù)分析前的入門教程 Python For Everybody P1:零基礎程序設計?zhuanlan.zhihu.comP2: Python 數(shù)據(jù)結構
P3: 使用 Python 訪問網(wǎng)絡數(shù)據(jù)
P4: Python 數(shù)據(jù)庫開發(fā)
P5: 畢業(yè)項目:使用Python獲取并處理數(shù)據(jù),并用可視化方式展現(xiàn)數(shù)據(jù)
2. 編程包含兩方面,一是Algorithms算法:解決問題的一系列規(guī)則/步驟;二是Data Structures數(shù)據(jù)結構:在電腦上組織數(shù)據(jù)的方式。
P2部分的主要內(nèi)容就是Python的數(shù)據(jù)結構:列表、字典與元組,以及怎么用它們來進行文件處理。P2總體邏輯結構上我動得還挺多的,歡迎小伙伴交流,點贊和收藏呀,我還會持續(xù)更新的~
C6 String字符串
1. str.method()字符串方法
- 字符串方法: string library里處理字符串的一系列內(nèi)置函數(shù)。
- str.method()返回修改后的新字符串,但是并不改變原字符串
- 查看字符串可用方法:dir(str)
常用字符串方法
*whitespace空白:所有不顯示的space/tab/newline
2. 操作字符串:長找分合換
C7 Files 文件
1. File handle文件句柄
- 文本文件是由行組成的,每一行結尾都有一個newline character換行符 n,n是看不見的字符,其類型為str,是一個字符而不是兩個,len("n")結果為1
- filehandle是open()函數(shù)返回的變量,用于按行操作文件,需為filehandle命名,print(filehandle)不顯示文章實際內(nèi)容
- 可以將文件句柄視為一個字符串序列a sequence of strings,文件中每一個以“n”結尾的行都是這個序列中單獨的字符串。
2. 按行處理文件
- 這種處理方法將每一行當做一個str
1) 打開文件open() 函數(shù)
fhandle=open(filename) #或者 fhandle=open(filename,mode) # mode可省。'r'表示只讀;'w'表示編輯。不要忘記引號!2) 對文件進行按行打印/對行計數(shù)/查找行
fhandle=open(filename) for line in fhandle:line=line.rstrip()statement- 用str.rstrip()處理多余的n:文本每一行本身后面就有一個n結尾,在打印的時候由于for循環(huán),會在后面自動再加一個n,所以打印出的結果行中間穿插有空行。用line=line.rstrip()刪去n。這是一個非常常用的代碼
- 在statement做文章,可以完成對問文檔按行打印/對行計數(shù)/查找行(可能會用到count=count+1計數(shù);str.startswith()篩選行、continue跳過不需要的行、用in查找包含某字符串的行等)
3. 把文件視為一整個字符串進行處理
- 這種方法將整個file當做一個str(newline和其他符號也包括在內(nèi)),因此不適用于過大的文件;如果文件過大,如幾百萬行,還是按行讀比較好
1)讀取文件filehandle.read()方法
fhandle=open(filename) strname =fhandle.read() statement2) 利用statement完成按字符打印/文本字符計數(shù)/查找字符(和C6對str的操作一致)
- 按字符打印:print(strname)
- 文本字符計數(shù):直接用len(strname)計數(shù)文件有多少字符(這樣會計入所有的字符,比如n)。
- 查找字符:切片。print(strname[位置1:位置2])打印切片(實際上位置1、2并不好找)
C8 List列表
1. 列表
1) list有序、可變mutable
- 形式: 中括號+逗號 listname=[a,b,c]
- 列表里的元素可以是Python里的任何object對象,甚至是其他列表;列表可以為空[]
- 字符串immutable不可變,不能改變字符串的內(nèi)容,若需改動,需重新賦值;列表mutable可變,用索引操作符可以改變列表里的元素。
2)range(n) 返回由0到n-1的整數(shù)數(shù)字構成的迭代對象
- Python 3中range(n)函數(shù)返回迭代對象range(0,n)而不是列表;把迭代對象放在像list這樣的迭代器里面,才能成為列表
3) list與for循環(huán)
for obj in list:statement #或者 for i in range(len(list)):statement2. 列表函數(shù)及l(fā)ist.method()列表方法
1)針對list的內(nèi)置函數(shù):
- min(listname)/max(listname)/sum(listname)
求平均數(shù)時,循環(huán)的兩種寫法,右邊在計算之前要把所有數(shù)據(jù)存起來,更占內(nèi)存。
2)list.method()列表方法
- 查看列表可用方法:dir(list)
常用列表方法
list.append(obj) 在列表末尾添加元素
- 可添加各種數(shù)據(jù)類型/數(shù)據(jù)結構,但是一次只能添加一個元素(列表實參)
- 字符串記得加引號
- 注意:給列表添加元素時,list=list.append(obj)是錯誤的,會返回None;list.append(obj)就可以直接改動列表本身,print(list)直接就是新列表。相比之下,由于str不可變,str.method()不改變原有字符串,需要用賦值的方式str=str.method()替換舊變量才能起到改變的效果。
3.操作列表:長找分合換
4.str轉list:str.split()方法
listname=list() listname=str.split() #默認分隔符為whitespace(space/tab/newline)#或者自己定義分隔符delimiter是什么 listname=list() listname=str.split(delimiter)實例:對于一個長字符,想取出其中的一段字符串
- 法1:find找出首尾位置1、2;str[位置1,位置2]切片
- 法2:str.split()利用特殊分隔符str轉list;list[位置]索引
C9 Dictionary字典
1.字典dictionary:python最強大collection
- 存在于很多語言中,只是名字不一樣。如perl/php: associative arrays關聯(lián)數(shù)組。字典可改,無序,靠key進行索引。
- 字典的組成Dictionary Literals(Constants):curly braces花括號+a list of keys: values pairs。基本形式dictname={key1: value1,key2: value2}。
創(chuàng)建空字典
dictname=dict() #或者 dictname={}創(chuàng)建字典
dictname={key1: value1,key2: value2,…} #或者 dictname[key1]=value1 dictname[key2]=value2 …向字典里添加元素
dictname[newkey]=newvalue #如果是寫了已經(jīng)有的key,就變成修改該key的鍵值了- 字典里的1)value鍵值不需要唯一;而鍵必須保持唯一,如果同一字典內(nèi)添加的鍵出現(xiàn)了重復,后面的鍵值會替換前面的鍵值,最終只保留最后一個鍵值;2)值可以取任何數(shù)據(jù)類型;但鍵必須是不可變的,如字符串,數(shù)字或元組,鍵不能取列表。
2. 常用dict.method()字典方法
3.操作字典:長找換
4. 實例:統(tǒng)計文件中每個詞出現(xiàn)的頻數(shù)
1)用dic[obj]=dic.get(obj,0)+1一次性完成計數(shù)和賦值(常用idiom)
dic=dict() for obj in list:dic[obj]=dic.get(obj,0)+1 print(dic) #注意:由于字典是無序的,所以最終統(tǒng)計出來的詞頻也是無序的。2)實例:統(tǒng)計文件中出現(xiàn)次數(shù)最多的詞及其頻數(shù)(C10利用元組的比較來為無序的字典排序,藍色部分會更加精簡)
C10 Tuples元組
1. 定義
- Tuples元組有序不可更改。基本形式是圓括號+逗號隔開,
- tuples and assignment元組可以同時給多個對象賦值(注意賦值之后元組不能改!)。可以把元組放在賦值符號的左邊(python 特別好的功能),甚至可以省略括號。下面例子要保證賦值左右元素數(shù)量相等
- tuples的出現(xiàn)是為了提升效率,它們儲存空間小,訪問速度快。如果只是想儲存一個list,看一下丟掉,用tuple更好。
2. 操作元組
3. 利用元組的可比性給字典里的元素排序
1)元組有可比性
- 從左邊開始,只要有一對對應位置的元素滿足條件,就返回True,后面的元素根本不比較。如果第一對元素結果為False,就繼續(xù)比較下一對元素,以此類推,直到返回True就立刻停止比較。
- 字符串的比較:如Sally和Sam開始Sa一樣,但是l在m前面,所以'Sally'<'Sam'。只對比到有第一個明確的答案出現(xiàn)就停止
2)sorted(iretable)函數(shù) vs. list.sort()方法
sorted(iretable) #默認False升序 #或者 sorted(iretable,reverse=False升序/True降序)- sorted(iretable)函數(shù)適用于所有可迭代變量;而list.sort()方法僅使用于列表
3) 利用tuples的可比性和sroted()函數(shù)給字典里無序的元素排序
實例:求出文件里出現(xiàn)頻數(shù)前10的詞及其頻數(shù)(P2所有章節(jié)代碼綜合應用)
- 注意top10比的是元組(value,key),和dict里面的元組中的元素順序相反
- list comprehension列表推導式
上面C10部分對應的代碼還有列表推導式的寫法:更短,執(zhí)行起來更高效
總結
以上是生活随笔為你收集整理的keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python是动态类型语言、变量不需要显
- 下一篇: 学业水平考试网登录_海南高中学业水平考试