



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章快速改造:基礎知識1.2 交互式解釋器在 IDLE 編輯器,在提示符后輸入help 然后按回車;也可以按下F1 獲得有關 IDLE 的幫助信息1.4 數字和表達式1/2 返回 0,整除除法; 1.0/2 返回 0.5,用一個或者多個包含小數點的數字參與計算。另外改變除法的執行方式:from_future_importdivision/可以實現整除, 1.0/2.0 返回 0.0%取余數;* 冪運算;>>> 1/201>>> 1.0/20.5>>> 1.0/2.00.0>>> 10%31>>> 9*(
2、1/2)1>>> 9*(1.0/2)3.0>>> 2.75%0.50.25>>> -9%43>>> -3%21>>> -3/2-2長整數普通整數不能大于2147483647 也不能小于 -2147483648,若更大的數,可以使用長整數。長整數結尾有個L ,理論上小寫也可以,不過為了便于識別,盡可能用大寫。2十六進制和八進制0XAF 返回 175 ,十六進制;010 返回 8,八進制>>> 0xAF175>>> 01081.5 變量包含字母、數字和下劃線。首字母不能是數
3、字開頭。1.8 函數Pow 計算乘方: pow(2,3),2*3 均返回 8;pow 等標準函數稱為內建函數。Abs(-10)求絕對值,返回10;round(1.0/2.0)返回 1.0,把浮點數四舍五入為最接近的整數值。>>> pow(2,3)8>>> 2*38>>> abs(-10)10>>> round(1.0/2.0)1.03>>> round(8.06,2)8.06>>> round(8.06,1)8.11.9 模塊 import>>> import math
4、>>> math.floor(8.8) 向下取整8.0>>> math.ceil(8.8)向上取整9.0>>> int(math.ceil(32.1)33>>> int(32.9)32>>> flo=math.floor>>> flo(33.9)33.0使用了 from 模塊 import 函數 ,這種方式的 import 命令之后,就可以直接使用函數, 而不需要使用模塊名最為前綴了。但是要注意在不同模塊引用,可能導致函數沖突。4>>> from math import
5、 sqrt>>> sqrt(9)3.0>>>和復數nan-not a number返回的結果Cmath 即 complex math 復數模塊>>> import cmath>>> cmath.sqrt(-1)1j返回的 1j 是個虛數,虛數以 j 結尾;這里沒有使用from cmath importsqrt,避免與 math 的 sqrt 沖突。注釋符號:#1.11字符串,使用 ”可以進行轉義。拼接字符串>>> 'Hello, ' 'World' 'Hello,
6、World'>>> 'Hello,' 'World''Hello,World'>>> 'Hello, '+'World' 'Hello, World'>>> 'Hello, '+55Traceback (most recent call last):File "<pyshell#43>", line 1, in <module>'Hello, '+5TypeErr
7、or: cannot concatenate 'str' and 'int' objects>>>需要保證兩邊是一樣的字符串,而有其他格式要報錯的字符串表示 str 和 repr-兩個均為函數, 事實上 str 是一種類型Str 會將值轉換為合理形式的字符串。另外一種是通過repr 函數,創建一個字符串。Repr(x)也可以寫作 x 實現(注意: 是反引號),python3.0 中已經不適用反引號了>>> print 'hello,world' hello,world>>> print rep
8、r('hello,world') 'hello,world'>>> print str('hello,world') hello,world>>> print 1000L10006>>> 1000L1000L>>> print repr(1000L) 1000L>>> print str(1000L) 1000>>> tmp=42>>> print 'The number is:'+tmpTraceback
9、 (most recent call last):File "<pyshell#55>", line 1, in <module>print 'The number is:'+tmpTypeError: cannot concatenate 'str' and 'int' objects>>> print 'The number is:'+tmp The number is:42>>> print 'The number is:'+st
10、r(tmp) The number is:42>>> print 'The number is:'+repr(tmp) The number is:42和 raw_input 的比較7>>> name=input("What's your name:") What's your name:GumbyTraceback (most recent call last):File "<pyshell#60>", line 1, in <module>name=input
11、("What's your name:")File "<string>", line 1, in <module>NameError: name 'Gumby' is not defined>>> name=input("What's your name:")What's your name:'Gumby'后面輸入的字符串增加了引號不報錯。>>> input('Enter a number:') Ente
12、r a number:33>>> name=input("What's your name:") What's your name:'Gumby'>>> raw_input("What's your name:") What's your name:Gumby 'Gumby'>>> raw_input("What's your name:") What's your name:Gumby8'Gu
13、mby'>>> raw_input('Enter a number:') Enter a number:3'3'>>>長字符串、原始字符串和unicode(1)長字符串使用三引號;轉義的反斜杠用于行尾>>> print 'hello, world!'hello, world!>>> print '''hello,world!'''hello,world!>>> 1+2+3+410( 2)原始字符串,對于
14、反斜線并不會特殊對待,以 r 開頭,注意字符串尾部9>>> print 'c:nowhere'c: owhere>>> print r 'c:nowhere' SyntaxError: invalid syntax>>> print 'c:nowhere'c:owhere>>> print r'c:nowhere' c:nowhere>>> print r"This is illegal"SyntaxError: EOL
15、while scanning string literal>>> print r"This is illegal"This is illegal>>> print r"This is illegal" "" This is illegal10(3)Unicode 在字符串前增加前綴U>>> print u'hello, world' hello, world第二章列表和元組序列中的每個元素被分配一個序號-即元素的位置,也被稱為索引。第一個索引為 0,最后一個元素可以
16、使用-1 標記2.1 序列概覽Python 包含 6 中內建的序列:列表,元組,字符串, unicode 字符串, buffer 對象和 xrange 對象。列表和元組的主要區別:列表可以修改,元組則不能。內建函數返回元組。幾乎所有情況下都可以使用列表代替元組。特殊情況之一:使用元組作為字典的鍵,因為鍵不可以更改,所以不能用列表。列表的各個元素通過逗號進行分隔,寫在方括號內。>>> edward='Edward Gumy',42>>> john='John Smith',50>>> database=edwa
17、rd,john>>> database'Edward Gumy', 42, 'John Smith', 50>>>112.2 通用序列操作包括:索引,分片,加,乘以及檢查某個元素是否屬于序列的成員,除此之外還有計算長度,找出最大元素和最小元素的內建函數。迭代:依次對序列中的每個元素重復執行某些操作。索引從 0 開始,最后一個元素可以使用-1.索引訪問的單個元素>>> greeting="Hello">>> greeting0'H'>>>
18、greeting-1'o'>>> four=raw_input('Year:')3 Year:2005>>> four'5'分片12冒號:第一個元素包含在分片內,第二個元素不包含在分片內,是分片之后剩余部分的第一個元素編號。>>> num=1,2,3,4,5,6,7,8,9,10>>> num3:64, 5, 6>>> num0:11>>> num7:10 # 索引 10 指向第 11 個元素,這個元素不存在。8, 9, 10>>
19、;> num-3:-1 8, 9>>> num-3:0>>> num-3:8, 9, 10>>> num7:8, 9, 10>>> num:31, 2, 3>>> num: # 復制整個序列1, 2, 3, 4, 5, 6, 7, 8, 9, 10>>> num0:10:2131, 3, 5, 7, 9>>> num3:6:34>>> num:4 1, 5, 9>>> num8:3:-19, 8, 7, 6, 5>>
20、> num10:0:-2 10, 8, 6, 4, 2>>> num0:10:-2>>> num:-2 10, 8, 6, 4, 2>>> num5:0:-2 6, 4, 2>>> num:5:-2 10, 8>>> num5:-26, 4, 2>>>14序列相加兩種相同類型的序列才能進行鏈接操作>>> 1,2,3+4,5,6 1, 2, 3, 4, 5, 6>>> 'hello, '+'world' 'h
21、ello, world'>>> 'hello, '+1,2Traceback (most recent call last):File "<pyshell#122>", line 1, in <module>'hello, '+1,2TypeError: cannot concatenate 'str' and 'list' objects>>>15乘法數字 X 乘以一個序列會生成新的序列,原序列被重復X 次>>> '
22、PH'*3'PHPHPH'>>> 42*342, 42, 42>>> 1,2*31, 2, 1, 2, 1, 2>>> >>> none*3 # 注意 N 需要大寫,不然報錯。 None 是一個內建值,它的含義是“什么也沒有”Traceback (most recent call last):File "<pyshell#128>", line 1, in <module>none*3NameError: name 'none' is no
23、t defined>>> None*316None, None, None>>>成員資格in檢查一個值是否在一個序列中。條件為真返回True,條件未假返回False>>> pw="abc">>> 'a' in pw True>>> 'x' in pw False>>> database='John',42,'Smith',36>>> 'john',42 in databa
24、se # 大小寫,要注意False>>> 'John',42 in database True17>>> num=1,2,3,4,5>>> 1,2 in num False>>> 1 in num False>>> 1 in numTrue長度、最小值和最大值內建函數 len、min 和 max>>> num=1,8,3>>> len(num)3>>> max(num)8>>> min(num)1>>>
25、; max(2,3)183max 跟 min 的參數并不一定是序列, 而是以多個數字直接作為參數。>>> exm='h',12,'e',2>>> max(exm)'h'>>> exm=12,'e',2,'h'>>> max(exm)'h'>>> max('A',1,'1','a','z')'z'這個有點意思了,需要以后注意查查,是根
26、據ascii 進行提取的嗎?2.3 列表: Python 的“苦力”討論列表不同于元組跟字符串的地方函數>>> ls=list("Hello")19>>> ls'H', 'e', 'l', 'l', 'o'>>> ''.join(ls)'Hello'>>>基本的列表操作列表可以使用所有適用于序列的操作。而列表是可以修正的。本節介紹可以改變列表的方法:元素賦值、元素刪除、分片賦值以及列表方法(請
27、注意,并非所有的列表方法都真正地改變列表)1、改變列表:元素賦值>>> x=1,1,1>>> x1=2>>> x1, 2, 1注意:不能為一個位置不存在的元素進行賦值。2、刪除元素del>>> num=1,2,3,4>>> del num2>>> num1, 2, 420除了刪除列表中的元素, del 還能用于刪除其他元素。 可以用于字典元素甚至其他變量的刪除操作。3、分片賦值>>> nm=list('perl')>>> nm'
28、p', 'e', 'r', 'l'>>> nm2:=list("ar")>>> nm'p', 'e', 'a', 'r'>>> nm2:=list("ckly") # 可以改變成長度>>> nm'p', 'e', 'c', 'k', 'l', 'y'>>>
29、; nm=1,5>>> nm1:1=2,3,4 # 插入行的元素>>> nm1, 2, 3, 4, 5>>> nm1:4= # 刪除一段元素,與 del 的結果一樣>>> nm211, 5>>> nm=1,2,3,4,5>>> del nm1:4>>> nm1, 5可以根據實際步長進行其他操作, 測試的時候貌似要注意對應的位置元素個數。>>> num=1,2,3,4,5>>> num1:4:2=8,10>>> num
30、1, 8, 3, 10, 5列表方法方法的調用方式:對象 .方法(參數)1. append 用于在列表末尾追加新的對象,直接修改原來的列表。>>> lst=1,2,3>>> lst.append(4)>>> lst221, 2, 3, 4>>> lst=1,2,3>>> lst.append(4,5)Traceback (most recent call last):File "<pyshell#209>", line 1, in <module>lst.app
31、end(4,5)TypeError: append() takes exactly one argument (2 given)>>> lst.append(4,5)>>> lst1, 2, 3, 4, 52. count 方法,統計某個元素在列表中出現的次數:>>> 'to','be','or','not','to','be'.count('to')2>>> x=1,2,1,1,2,1,1,2>>&
32、gt; x.count(1,2)2313. extendextend方法可以在列表的末尾一次性追加另一個序列中的多個值。換句話說,可以用新列表擴展原有的列表>>> a=1,2,3>>> b=4,5,6>>> a.extend(b) #extend擴展了原來的序列,即 a>>> a1, 2, 3, 4, 5, 6>>> a+b #鏈接操作,僅僅返回一個全新的列表1, 2, 3, 4, 5, 6, 4, 5, 6>>> a1, 2, 3, 4, 5, 6>>> alen(a
33、):=b # 使用分片來實現相同的結果,但是代碼的可讀性不如 extend。>>> a1, 2, 3, 4, 5, 6, 4, 5, 6>>> a=a+b #此鏈接方法的效率要比 extend 方法低>>> a1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6244. indexindex 方法用于從列表中找出某個值第一個匹配項的索引位置。>>> phase='We','are','hero','!'>>> phase.in
34、dex('hero')2>>> phase.index('ero')Traceback (most recent call last):File "<pyshell#15>", line 1, in <module>phase.index('ero')ValueError: 'ero' is not in list5. insert25用于將對象插入列表中>>> num=1,2,3,4,5,6,7>>> num.insert(3,
35、39;four')>>> num1, 2, 3, 'four', 4, 5, 6, 7>>>>>> num=1,2,3,4,5,6,7>>> num3:3='four' # 意外發現>>> num1, 2, 3, 'f', 'o', 'u', 'r', 4, 5, 6, 7>>> num=1,2,3,4,5,6,7>>> num3:3='four' #
36、 可以分片處理,依然是可讀性不如insert>>> num1, 2, 3, 'four', 4, 5, 6, 76. poppop 方法會移出列表中的一個元素(默認是最后一個) ,并且返回26該元素的值。pop 方法是唯一一個既能修改列表又返回元素值(除了None)的列表方法。使用 pop 方法可以實現一種數據結構-棧。對于棧的兩個操作(放入和移出),pop 跟 append方法恰好相反。 Python 沒有入棧方法,變通使用 append方法。提示:對于先進先出的隊列,可以使用insert(0,)來代替 append方法。或者,也可以繼續使用append 方
37、法,但必須使用pop(0)來代替 pop().更好的解決方案是使用 collection 模塊中的 deque 對象。>>> x=1,2,3>>> x.pop()3>>> x1, 2>>> x.pop(0)1>>> x2>>> x=1,2,3>>> x.append(x.pop()>>> x1, 2, 327>>>7. removeremove 方法用于移出列表中某個值的第一個匹配項:>>> x='to
38、9;,'be','or','not','to','be'>>> x.remove('be')>>> x'to', 'or', 'not', 'to', 'be'>>> x.remove('bee')Traceback (most recent call last):File "<pyshell#37>", line 1,
39、 in <module>x.remove('bee')ValueError: list.remove(x): x not in list注意: remove 是一個沒有返回值的原位置改變方法。288. reversereverse方法將列表中的元素反方向存放:>>> x=1,2,3>>> x.reverse()>>> x3, 2, 19. sortsort 方法用于在原位置對列表進行排序。在“原位置排序”意味著要改變原來的列表, 從而讓其中的元素能按一定的順序排列,而不是返回一個已經排序的列表副本。>>
40、;> x=4,6,2,1,7,9>>> x.sort()>>> x1, 2, 4, 6, 7, 9*>>> x=4,6,2,1,7,929>>> y=x.sort() # 因為 sort 方法修改了 x 缺返回了空值>>> print yNone>>> x1, 2, 4, 6, 7, 9*>>> x=4,6,2,1,7,9>>> y=x: # 有效的復制整個列表的方法>>> y.sort()>>> x4, 6,
41、 2, 1, 7, 9>>> y1, 2, 4, 6, 7, 9*>>> x=4,6,2,1,7,9>>> y=x#簡單的賦值是沒有用的,僅僅讓 x 跟 y 都指向同一個列表。>>> y.sort()>>> x1, 2, 4, 6, 7, 9>>> y1, 2, 4, 6, 7, 9>>>30另外一種獲取已排序的列表副本的方法是,使用sorted函數>>> x=4,6,2,1,7,9>>> y=sorted(x)>>>
42、; y1, 2, 4, 6, 7, 9>>> x4, 6, 2, 1, 7, 9>>> sorted('Python') #sorted可以用于任何序列,卻總是返回一個列表。 'P', 'h', 'n', 'o', 't', 'y'如果要把一些元素按照相反的順序排列,可以先使用sort 或者sorted, 然 后 再 調 用reserse 方 法 , 或 者 使用reverse 參 數 。31Sorted(x).reverse()這樣可以。10.高
43、級排序如果希望元素按照特定的方式進行排序,可以通過compare(x,y)的方式自定義比較函數。Compare(x,y),x>y 返回正數 ;x<y 返回負數 ;x=y返回 0(根據你的定義)。定義號該函數,可以提供給sort 方法作為參數了。內建函數cmp 提供了比較函數的默認實現方式:>>> cmp(42,32)1>>> cmp(99,100)-1>>> cmp(10,10)0>>> num=5,2,9,7>>> num.sort(cmp)>>> num2, 5, 7,
44、9>>> cmp(42,32)1>>> num=5,2,9,7>>> num.sort(cmp)>>> num2, 5, 7, 932Sort 方法還有另外兩個參數-key 和 reverse。如果要使用它們, 那么就要通過名字來指定。參數key 與 cmp 類似 -必須提供一個在排序過程中使用的函數。 然而該函數并不是直接用來確定對象大小, 而是為每個元素創建一個鍵, 然后所有元素來排序。 那么如果根據元素的長度進行排序,那么使用 len 作為鍵函數:>>> x='3aaa','
45、1a','4aaaa','0'>>> x.sort(key=len)>>> x'0', '1a', '3aaa', '4aaaa'另外一個關鍵字參數reverse 是簡單的布爾值 (True 或者 false),用來知名列表是否進行反向排序。>>> num=5,2,9,7>>> num.sort()>>> num2, 5, 7, 9>>> num.sort(reverse=True)>>> num9, 7, 5, 2>>>cmp,key,reverse參數都可以用于sorted函數。在多數情況下,為cmp或 key 提供自定義函數是非常有用的。332.4 元組:不可變序列用逗號分隔了一些值,即使僅有一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開腹手術麻醉指南
- 2025至2030中國有機硅膠行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國新聞出版行業發展現狀及前景趨勢與投資報告
- 2025至2030中國斯諾克用品市場深度調查及發展前景預測報告
- 2025至2030中國數字雜貨銷售行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國接尿器行業市場現狀分析及競爭格局與投資發展報告
- 2025至2030中國披薩芝士行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國床上用品保護器(床墊保護器)行業發展趨勢分析與未來投資戰略咨詢研究報告
- 漢代文化課件百度云下載
- 我的語文老師作文600字15篇
- 監理質量安全工作匯報
- 高處作業安全帶正確使用
- 機器人控制系統-深度研究
- 玉盤二部合唱正譜
- 人教版(2024)七年級下冊生物期末復習必背知識點提綱
- 初中語文學習規劃及方法
- 歐泰科-吊掛軟件使用教程
- 城市綠化與噪音減少的技術措施
- 電梯維保培訓
- 內審不符合項案例
- 在高中語文教學中如何融入中華民族共同體意識
評論
0/150
提交評論