Python語言實用教程第4章-Python序列課件_第1頁
Python語言實用教程第4章-Python序列課件_第2頁
Python語言實用教程第4章-Python序列課件_第3頁
Python語言實用教程第4章-Python序列課件_第4頁
Python語言實用教程第4章-Python序列課件_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 序列(Sequence)是指成員有序排列,并且可以通過下標偏移量訪問到它一個或幾個成員的類型統(tǒng)稱。序列是Python語言特有的一類非常有用的數(shù)據(jù)類型,它可以簡單看成是其它語言中數(shù)組、結構體、字符串等類型構建出的復合類型,它的類型層次要高于其它語言的基本類型。為此,使用序列類型數(shù)據(jù)會非常便捷與實用。 Python序列可以包含大量復合數(shù)據(jù)類型,用于組織形成其它數(shù)據(jù)結構。第4章 Python序列 學習重點和難點: 序列的基本概念 序列的通用操作 列表的基本使用 元組的基本使用 字符串的基本使用 字典與集合的基本使用 學習本章后將可以方便地處理大量序列類型的數(shù)據(jù),程序處理數(shù)據(jù)的能力將大大提高。第4章

2、 Python序列4.1 序列4.2 列表4.3 元組4.4 范圍range4.5 字符串第4章 Python序列4.6 序列間的轉換操作4.7 字典4.8 集合4.9 應用實例4.1 序列 序列是Python中基本的數(shù)據(jù)結構,也是Python的一類內(nèi)置類型(Built-in Type),內(nèi)置類型就是構建在Python解釋器里面的類型,序列還可以理解為是Python解釋器里定義的某個類(Class)。列表(包括范圍(Range))和元組這兩種數(shù)據(jù)類型是最常被用到的序列,Python內(nèi)建序列共有六種,除了列表和元組之外,還有字符串、Unicode字符串、buffer對象和最后一種xrange對象

3、,只是后3種不常使用而已。4.1 序列4.1.1 序列的概念4.1.2 序列通用操作4.1.1 序列的概念 數(shù)據(jù)結構是通過某種方式(例如對元素進行編號)組織在一起的數(shù)據(jù)元素的集合,這些數(shù)據(jù)元素可以是數(shù)字或者字符,甚至可以是其他數(shù)據(jù)結構。序列中的每個元素被分配一個序號:即元素的位置,也稱為索引。第一個索引是 0,第二個則是 1,以此類推。序列中的最后一個元素標記為 -1,倒數(shù)第二個元素為 -2,以此類推。 本章主要討論列表、元組、范圍(range)和字符串,其中列表是可以修改的,元組、范圍和與字符串則是不可修改的。4.1.2 序列通用操作 通用序列操作有:索引、分片、序列相加、乘法、成員資格、長

4、度、最小值和最大值。1、索引 序列中所有的元素都是有編號的,從0開始遞增。可以通過編號分別對序列的元素進行訪問。Python的序列也可以從右邊開始索引,最右邊的一個元素的索引為-1,向左開始遞減。 greeting=Hello greeting2 # l 為輸出結果,下同 greeting-1 # o stringtesting3 #可以對任何一個字符串進行索引,該字符串第3個索引為i字符 fourth=raw_input(Year: )3 #可以對輸入的字符串進行索引,本例表示想取輸入的字符串索引為3的信息Year: 2014 fourth # 44.1.2 序列通用操作 greeting=

5、Hello greeting2 # l 為輸出結果,下同 greeting-1 # o stringtesting3 #可以對任何一個字符串進行索引,該字符串第3個索引為i字符 fourth=raw_input(Year: )3 #可以對輸入的字符串進行索引,本例表示想取輸入的字符串索引為3的信息Year: 2014 fourth # 44.1.2 序列通用操作2、分片 索引用來對單個元素進行訪問,用分片可以對一定范圍內(nèi)的元素進行訪問,分片通過冒號相隔的兩個索引來實現(xiàn)。分片操作的實現(xiàn)需要提供兩個索引作為邊界,第一個索引的元素是包含在分片內(nèi)的,第二個則不包含在分片內(nèi)。 number=1,2,3,

6、4,5,6,7,8,9,10 number2:4 # 3, 4 # 取索引為第二和第三的元素 number-4:-1 # 7, 8, 9 # 負數(shù)表明是從右開始計數(shù) number4:-4 # 5, 6 # 正負數(shù)同出現(xiàn)來框定分片范圍 number-4: # 7, 8, 9, 10 #把第二個索引置空,表明包括到序列結尾的元素 number:3 # 1, 2, 3 #同上,把第一個索引置空表明包含序列開始的元素 number0:10:1 # 在分片的時候,默認步長為1,這里指定步長為11, 2, 3, 4, 5, 6, 7, 8, 9, 10 number0:10:2 #這里指定步長為2,這樣就

7、會跳過某些序列元素1, 3, 5, 7, 9 number10:0:-1 #步長也可以是負數(shù),但是第一個索引一定要大于第二個索引10, 9, 8, 7, 6, 5, 4, 3, 2 # 這里number10:0:-1等價于number9:0:-1 number10:0:-2 # 10, 8, 6, 4, 2 # 這里number10:0:-2等價于number9:0:-2 對于一個正數(shù)步長,Python會從序列的頭部開始向右提取元素,直到最后一個元素,而對于負數(shù)步長,則是從序列的尾部開始向左提取元素,直到第一個元素。4.1.2 序列通用操作3、序列相加 1,2,3+4,5,6 # 1, 2,

8、3, 4, 5, 6 # 列表類型序列相加 Hello +World! # Hello World! # 字符串類型序列相加 (1,2,3)+(4,5,6) # (1, 2, 3, 4, 5, 6) # 元組類型序列相加 1,2,3+Hello # 出錯了Traceback (most recent call last): File , line 1, in TypeError: can only concatenate list (not str) to list 最后一個例子,試圖列表和字符串進行相加,但是出錯了,雖然他們都是序列,但是是不同數(shù)據(jù)類型,是不能相加的。4.1.2 序列通用操作

9、4、乘法 用數(shù)字x剩以一個序列會生成新的序列,而在新的序列中,序列將會被重復x次。 Python*4 # PythonPythonPythonPython None*4 # None為Python的內(nèi)建值,這里創(chuàng)建長度為4的元素空間,但是什么元素也不包含:None, None, None, None4.1.2 序列通用操作5、成員資格 可以使用in運算符來檢查一個值是否在序列中,如果在其中,就返回Ture,如果不在,就返回False。 permission=rw r in permission # True x in permission # False6、長度、最小值和最大值 內(nèi)建函數(shù)len

10、、min和max分別返回序列所包含的元素的數(shù)量、序列中的最小元素和序列中的最大元素。 number=2,3,4,5,6,7,8,9,10 len(number) # 9 min(number) # 2 max(number) # 10 min(4,3,5) # 3 # 函數(shù)的參數(shù)不用一定是序列,也可以是多個數(shù)字 4.1.2 序列通用操作4.2 列表 列表(List)是最常用的Python數(shù)據(jù)類型,列表可以使用所有適用于序列的標準操作。列表的各個元素(或數(shù)據(jù)項)通過逗號分隔寫在方括號內(nèi),列表的元素不需要具有相同的類型,其中列表元素本身也可以是列表。 創(chuàng)建一個列表,只要把逗號分隔的不同元素使用方括

11、號括起來即可。如下所示: name=Clef,luo name0 # Clef test=name,10 # 列表元素本身也是一個列表 test # Clef, luo, 104.2 列表4.2.1 列表操作符與內(nèi)置函數(shù)4.2.2 列表的基本操作4.2.3 列表方法4.2.1 列表操作符與內(nèi)置函數(shù) 對列表可使用 + 和 * 的操作符。+ 號用于組合列表,* 號用于重復列表。 對列表的函數(shù)有:1)cmp(list1, list2) 比較兩個列表的元素(僅Python 2.x可用);2)len(list) 列表元素個數(shù);3)max(list) 返回列表元素最大值;4)min(list) 返回列表元

12、素最小值;5)list(seq) 將元組轉換為列表。其中,len、min和max 前面已統(tǒng)一介紹。4.2.2 列表的基本操作 列表元素使用下標索引來訪問,索引號從0開始,還可以通過(:)分隔的索引段來分片截取列表中連續(xù)的一段元素。1)更新列表:元素賦值 2)刪除元素:使用del語句 3)分片賦值4.2.3 列表方法列表方法的調(diào)用規(guī)則:列表對象.方法(參數(shù))1)append方法list.append(obj):用于在列表末尾追加新的對象。 numbers=1,2,3 numbers.append(4) # 直接追加新的列表元素 numbers # 1, 2, 3, 42)count方法list.

13、count(obj):統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)。 numbers=1,2,1,2,3,4,2 numbers.count(2) # 統(tǒng)計列表元素2出現(xiàn)的次數(shù),這里為33)extend方法 list.extend(seq):可以在列表的末尾一次性追加另一個序列中的多個值,這個方法很像序列相加,但是,extend方法會改變列表的原始值,而序列相加不會。 a=1,2,3 b=4,5,6 a.extend(b) a # 1, 2, 3, 4, 5, 67)remove方法list.remove(obj):用于移除列表中某個值的第一個匹配項。 x=1,2,3,2,4,5 x.remove(2) #

14、只移除了列表中的第一個匹配到2的元素 x # 1, 3, 2, 4, 58)reverse方法list.reverse():將列表中元素順序全部反向。 x=1,2,3,4,5 x.reverse() x # 5, 4, 3, 2, 14.2.3 列表方法10)高級排序 如果不想按照sort方法默認的方式進行排序,可以通過compare(x,y)的形式自定義比較函數(shù),compare(x,y)函數(shù)會在xy是返回正數(shù),如果x=y時則返回0,定義好該函數(shù)之后,就可以提供給sort方法作為參數(shù)了。同樣,key、reverse還是可以作為sort方法的參數(shù)。4.2.3 列表方法11)多維列表 Python

15、支持使用多維列表,就是列表的數(shù)據(jù)元素本身也是列表。 可以像創(chuàng)建普通列表一樣創(chuàng)建多維列表,例如:list33=1, 2, 3, 4, 5, 6, 7, 8, 9print(list33) # 輸出:1, 2, 3, 4, 5, 6, 7, 8, 9 為了引用多維列表中的一個數(shù)據(jù)值,需要兩個索引號,一個是外層列表的,另外一個是元素列表的。4.2.3 列表方法 【例4-1】 隨機產(chǎn)生20個100以內(nèi)的整數(shù),存放在數(shù)組(即列表)中,找出其中的最大數(shù)并指出其所在的位置。 分析:利用random.randint(0,100)隨機產(chǎn)生100以內(nèi)的大于等于0的整數(shù)。本題先用傳統(tǒng)數(shù)組元素比較查找的方法實現(xiàn);再用

16、列表內(nèi)置函數(shù)來非常便捷實現(xiàn)本例功能。4.3 元組 元組(Tuple)與列表一樣,也是一種序列,唯一的不同就是元組不能修改。創(chuàng)建元組很簡單,用逗號隔開一些值,就自動創(chuàng)建了元組,元組大部分的時候是通過圓括號括起來的。元組的基本操作可以參考:Python序列的通用操作。 1,2,3 # (1, 2, 3) (4,5,6) # (4, 5, 6)4.3 元組4.3.1 元組創(chuàng)建與訪問4.3.2 元組操作符與函數(shù)4.3.3 元組的基本操作4.3.1 元組創(chuàng)建與訪問 元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。例如: tup1 = (physics, chemistry, 1997, 20

17、00); tup2 = (1, 2, 3, 4, 5 ); tup3 = a, b, c, d; 創(chuàng)建空元組,tup1 = (); #空元組,不包含任何元素元組中只包含一個元素時,需要在元素后面添加逗號,tup1 = (50,); 元組與列表、字符串等都類似,下標索引從0開始,可以進行截取、組合等操作。4.3.2 元組操作符與函數(shù) 對元組與列表一樣,可使用 + 和 * 的操作符。+ 號用于組合元組,* 號用于重復元組。對元組操作的函數(shù)基本可以參照操作列表的函數(shù),有cmp(tuple1, tuple2)、len(tuple) 、max(tuple)、min(tuple)、tuple(seq)等,

18、唯一不同的是把list(seq)改為tuple(seq),tuple(seq)函數(shù)是把序列轉換為元組,其它函數(shù)的含義同對列表的函數(shù)。4.3.3 元組的基本操作 1)修改元組 元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如下實例: tup1, tup2 = (12, 34.56), (abc, xyz); # tup10 = 100; # 本修改元組元素的操作是非法的 tup3 = tup1 + tup2; # 創(chuàng)建一個新的元組 print(tup3); # (12, 34.56, abc, xyz)4.4 范圍range 范圍(Range)類型表示一個不可變的數(shù)字序列,通常用于

19、for循環(huán)中來控制循環(huán)次數(shù)。某種意義上范圍可以看成是列表的子集,但不同于列表它是不可修改的。范圍由range()函數(shù)來定義,其語法是: range(stop) 或 range(start, stop, step) range函數(shù)是一個用來創(chuàng)建算數(shù)級數(shù)序列的通用函數(shù),返回一個start, start + step, start + 2 * step, .結構的整數(shù)序列。4.4 范圍rangerange函數(shù)具有一些特性: 1)如果step參數(shù)缺省,默認1;如果start參數(shù)缺省,默認0。 2)如果step是正整數(shù),則最后一個元素(start + i * step)小于stop。 3)如果step是

20、負整數(shù),則最后一個元素(start + i * step)大于stop。 4)step參數(shù)必須是非零整數(shù),否則拋出VauleError異常。 注意:range函數(shù)返回一個左閉右開(left,right))的序列數(shù)。4.4 范圍range下面是一些使用range()函數(shù)的例子: range(10) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 range(1,10) # 1, 2, 3, 4, 5, 6, 7, 8, 9 range(1,10,1) # 1, 2, 3, 4, 5, 6, 7, 8, 9 range(1,10,3) # 1, 4, 7 range(0,-10,-1

21、) # 0, -1, -2, -3, -4, -5, -6, -7, -8, -9 range(0) # range(1,0) # r=range(5) type(r) # 4.5 字符串 字符串是最 Python 總常用的數(shù)據(jù)類型。字符串可以使用所有通用的序列操作,字符串與元組一樣,同樣是不可變的序列。關于字符串前面已有表達與使用,這里來更全面的介紹。4.5.1 字符串創(chuàng)建與訪問4.5.2 字符串操作符4.5.3 字符串方法4.5.1 字符串創(chuàng)建與訪問1、創(chuàng)建與訪問 可以使用引號來創(chuàng)建字符串。創(chuàng)建字符串很簡單,只要為變量分配一個值即可。Python不支持單字符類型,單字符Python也是作為

22、一個字符串使用。 Python訪問子字符串,可以使用方括號來截取字符串,如下實例:var1 = Hello World!var2 = Python Programming print(var10: , var10) # var10: Hprint(var21:5: , var21:5) # var21:5: ytho4.5.1 字符串創(chuàng)建與訪問 2、Python轉義字符在需要在字符中使用特殊字符時,Python用反斜杠()轉義字符,如表1-1、表1-2。 3、字符串常量下面是string模塊中的字符串常量(Python 3.6中的):string.digits:包含數(shù)字09的字符串string

23、.ascii_letters:包含所有字母(大寫或小寫)的字符串string.ascii_lowercase:包含所有小寫字母的字符串string.printable:包含所用可打印字符的字符串string.punctuation:包含所有標點的字符串string.ascii_uppercase:包含所有大寫字母的字符串string.hexdigits:包含數(shù)字09a-fA-F的16進制數(shù)字字符串string.octdigits:包含數(shù)字07的8進制數(shù)字字符串string.whitespace:包含全部空白的ASCII字符串 tnrx0bx0c字母字符串常量具體值取決于Python所配置的語言

24、,如果可以確定自己使用的是ASCII,那么可以在變量中使用ascii_前綴,例如string.ascii_letters。4.5.1 字符串創(chuàng)建與訪問4、Python三引號 Python中三引號(triple quotes)可以將復雜的字符串進行復制。Python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。 三引號的語法是一對連續(xù)的3個單引號或者3個雙引號(通常都是成對的用)。 hi = hi there hi # repr() 函數(shù)的效果(print(repr(hi)): hinthere print(hi) # str() 函數(shù)的效果(print(str(h

25、i)): hi there 5、Unicode 字符串 Python 中定義一個 Unicode 字符串和定義一個普通字符串一樣簡單: uHello World ! # uHello World !引號前小寫的u表示這里創(chuàng)建的是一個 Unicode 字符串。如果你想加入一個特殊字符,可以使用 Python 的 Unicode-Escape 編碼(即字符的Unicode編碼格式)。如下例所示: uHellou0020World ! # uHello World !被替換的u0020標識表示在給定位置插入編碼值為0 x0020的Unicode字符(空格符)。4.5.1 字符串創(chuàng)建與訪問4.5.2

26、字符串操作符操作符描述實例+字符串連接a + b 輸出結果: HelloPython*重復輸出字符串a(chǎn)*2 輸出結果:HelloHello通過索引獲取字符串中字符a1 輸出結果 e : 截取字符串中的一部分a1:4 輸出結果ellin成員運算符 - 如果字符串中包含給定的字符返回 TrueH in a 輸出結果 1not in成員運算符 - 如果字符串中不包含給定的字符返回 TrueM not in a 輸出結果 1r/R原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母r(可以大小寫)以外,與普通字

27、符串有著幾乎完全相同的語法。print(rn) 和 print(Rn),均輸出n%格式字符串見一下章節(jié) 1、字符串運算符 下表4-1是字符串運算符表,其中設變量a值為字符串Hello,b值為Python:4.5.2 字符串操作符 2、字符串“更新” 可以對已存在的字符串進行修改,并賦值給另一個變量,例如:var1 = Hello World!print(Updated String :- , var1:6 + Python)執(zhí)行結果:Updated String :- Hello Python 3、字符串格式化 Python 支持格式化字符串的輸出。盡管這樣可能會用到非常復雜的表達式,但最基本

28、的用法是將一個值插入到一個有格式符 %s 的格式字符串中。在 Python 中,字符串格式化使用與 C語言中 sprintf 函數(shù)一樣的語法。例如:print(My name is %s and weight is %d kg! % (Zara, 21)輸出結果:My name is Zara and weight is 21 kg! %.5s % Guido van Rossum # Guido # 5表示最大字段寬度 from math import pi %10.2f % pi # 3.14 # 字段寬度為10,精度為2 %.*s % (5, Guido van Rossum) # Gu

29、ido # 使用*,表示從元組參數(shù)中讀取字符寬度或者精度,這里為字符寬度為54.5.2 字符串操作符4.5.3 字符串方法 字符串方法(又叫字符串內(nèi)置函數(shù))實現(xiàn)了string模塊的大部分方法。詳細的字符串方法及其描述略,這里只介紹幾個很常用的方法。其它方法的使用請參照幫助(https:/docs.P/3.6/library/stdtypes.html#textseq)。目前字符串內(nèi)建支持的方法,都包含了對Unicode的支持,有一些甚至是專門用于Unicode的。 請注意:字符串方法都是返回修改后的字符串,本身原字符串并沒有改變。4.5.3 字符串方法1、find方法2、join方法3、low

30、er方法4、replace方法5、split方法 6、strip方法具體方法使用,詳見書本。4.6 序列間的轉換操作 Python列表、元組和字符串,它們之間的互相轉換使用三個函數(shù)str(),tuple()和list()。具體示例如下所示: s = xxxxx list(s) # x, x, x, x, x tuple(s) # (x, x, x, x, x) tuple(list(s) # (x, x, x, x, x) tuple(1:2,3:4) #(1,3) #針對字典(見下節(jié))會返回字典的key組成的tuple list(tuple(s) # x, x, x, x, x 列表和元組轉

31、換為字符串則必須依靠join函數(shù)。 .join(tuple(s) # xxxxx .join(list(s) # xxxxx str(tuple(s) # (x, x, x, x, x)4.7 字典 字典(dict)由鍵和對應值成對組成。字典也被稱作關聯(lián)數(shù)組或哈希表。 如果想將值分組到一個結構中,并且通過編號對其進行引用,列表就能派上用場了。字典是一種通過名字引用值的數(shù)據(jù)結構,字典中的值并沒有特殊的順序,但是都是存儲在一個特定的鍵(Key)里,鍵可以是數(shù)字、字符串或者元組等。例如: dict = Alice: 2341, Beth: 9102, Cecil: 32584.7 字典4.7.1 字

32、典創(chuàng)建與訪問4.7.2 字典基本操作符4.7.3 字典方法4.7.1 字典創(chuàng)建與訪問 字典是由多個鍵及與其對應的值構成的對組成(鍵/值對稱為項),每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典是由一對大括號括起來,空字典(不包括任何項)由兩個大括號組成,字典中的鍵是唯一的,而值并不唯一。 phonebook=Alice:2341,Beth:9102,Cecil:3258 # 定義字典也可以通過dict函數(shù)來建立字典 items=(name,Gumby),(age,42) d=dict(items) # 通過dict函數(shù)來建立映射關系 d # age: 42, name:

33、 Gumby dd=dict(name=Clef,age=42) # 由dict函數(shù)來建立映射關系的另一種表達 dd # age: 42, name: Clef下面的例子都是創(chuàng)建字典one: 1, two: 2, three: 3: a = dict(one=1, two=2, three=3) b = one: 1, two: 2, three: 3 c = dict(zip(one, two, three, 1, 2, 3) d = dict(two, 2), (one, 1), (three, 3) e = dict(three: 3, one: 1, two: 2) a = b = c

34、 = d = e # True # 注意:a=b=c等價于a=b and b=c4.7.1 字典創(chuàng)建與訪問 訪問字典里的值,把相應的鍵放入字典后的方括弧, 如下實例: dict = Name: Zara, Age: 7, Class: First; print(dictName: , dictName); # dictName: Zara print(dictAge: , dictAge); # dictAge: 7如果用字典里沒有的鍵訪問數(shù)據(jù),則會出錯的。4.7.2 字典基本操作符 1、字典的基本操作行為 字典的基本行為在很多方面與序列(sequence)類似:(1)len(d)返回d中項(

35、鍵-值對)的數(shù)量dict = Name: Zara, Age: 7;print(Length : %d % len(dict) # Length : 2(2)dk返回關聯(lián)到鍵k上的值(3)dk=v將值v關聯(lián)到鍵k上dict = Name: Zara, Age: 7, Class: First;dictAge = 8; # 修改存在的鍵值dictSchool = DPS School; # 鍵不存在時,添加新的項print(dictAge: , dictAge); # dictAge: 8print(dictSchool: , dictSchool); # dictSchool: DPS Sch

36、ool4.7.2 字典基本操作符(4)del dk刪除鍵為k的項 能刪單一的元素也能清空字典,清空只需一項操作。del dictName; # 刪除鍵是Name的項dict.clear(); # 清空字典所有條目del dict ; # 刪除字典(5)k in d檢查d中是否有含有鍵為k的項, key not in d等價于not k in d。(6)cmp()與str()函數(shù) 1)cmp() 函數(shù)比較兩個字典元素。語法:cmp(dict1, dict2) 2)str() 函數(shù)將值轉化為適合于人閱讀的形式4.7.2 字典基本操作符 字典值可以沒有限制地取任何Python對象。兩個重要的點 需要

37、特別注意: 1)不允許同一個鍵出現(xiàn)兩次。創(chuàng)建時如果同一個鍵被賦值兩次,后一個值會被記住,如下實例:dict = Name: Zara, Age: 7, Name: Manni;print(dictName: , dictName); # dictName: Manni 2)鍵必須不可變,所以可以用數(shù)、字符串或元組充當,但用列表就不行,例如:dict = Name: Zara, Age: 7;print(dictName: , dictName);輸出結果:Traceback (most recent call last): File test.py, line 3, in dict = Nam

38、e: Zara, Age: 7;TypeError: list objects are unhashable4.7.3 字典方法1、fromkeys方法2、get方法3、fromkeys方法4、get方法5、has_key方法6、items方法和iteritems方法7、iter函數(shù)8、keys方法和iterkeys方法9、pop方法10、popitem方法11、setdefault方法12、update方法13、values方法和itervalues方法具體使用詳見書本4.8 集合 集合(Set)是一組無序的不同的元素的集合。它有可變集合(set()和不可變集合(frozenset()兩種。

39、集合常用于:成員測試、刪除重復值以及計算集合并、交、差和對稱差等數(shù)學運算。對可變集合set,有添加元素、刪除元素等可變操作。4.8.1 集合創(chuàng)建與訪問4.8.2 集合基本操作符4.8.1 集合創(chuàng)建與訪問 非空集合可以把逗號分隔的元素放在一對大括號中來創(chuàng)建。如:jack, sjoerd。 創(chuàng)建集合的語法格式:class set(iterable) 其中iterable表示可迭代的序列集,集合元素必須是可哈希的、不可改變的,如:str、tuple、frozenset、數(shù)字等。set()得到一個空的集合。例如:set1=set() 或 set2=1,2,3 或 set3=set(1,2,3) 或 s

40、et4=set(1,2,3) 或 set5=set(abc)等。set2 # 1, 2, 3set3 # 1, 2, 3set4 # 1, 2, 3set5 # b, a, c集合是無序的不重復的,例如:li = 11,22,11,33a = set(li)print(a) # 33, 11, 224.8.2 集合基本操作符 與其他序列類型一樣,集合支持x in set、len(set)和for x in set等表達形式。集合類型是無序集,為此,集合不會關注元素在集合中的位置、插入順序。集合也不支持元素索引、切片或其他序列相關的行為。 集合set是可改變可修改的,可以使用add()和remo

41、ve()方法來完成對集合的改變。下面是集合提供的基本操作(set2、set3參照前面的值): 1)增加元素:s.add(元素)。例如set2.add(5); set2 # 1, 2, 3, 5 2)增加多個元素:s.update(*others)。 set2.update(5,6,7,8); set2 # 1, 2, 3, 5, 6, 7, 8 3)刪除元素:s.remove(元素) 或 s.discard(元素),s.remove(元素)若元素不存在會報錯,而s.discard(元素)不會。set2.remove(1); set2.discard(1); set2 # 2, 3, 5, 6,

42、 7, 84.8.2 集合基本操作符4)查找元素:無法通過下標索引來定位查找元素。但可以通過x in set 來判定。5)修改元素:元素都為不可變類型,無法直接修改元素。但可以先刪除再添加來改變元素。set2.remove(3); set2.add(4); set2 # 2, 4, 5, 6, 7, 86)集合與操作:s & t或 ersection(t) # 返回一個新的 set 包含s和t中的公共元素。set2 & set3 # 2 ,set2 & set3等價于ersection (set3)7)集合或操作:s | t 或 s.union(t):返回一個新的set包含s 和 t 中的每一

43、個元素。set2 | set3 # 1, 2, 3, 4, 5, 6, 7, 8,set2|set3等價于set2.union(set3)4.8.2 集合基本操作符8)集合與非操作:s t或s.symmetric_difference(t) # 返回一個新的 set 包含 s 和 t 中不重復的元素。set2 set3 # 1, 3, 4, 5, 6, 7, 8,set2set3等價于set2.symmetric_difference(set3)9)集合減操作:st或s.difference(t) # 返回一個新的set包含s中有但是t中沒有的元素。set2set3 # 8, 4, 5, 6, 7,set2-set3等價于set2.difference(set3)10)判斷是否是子集或超集:s.issubset(t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論