国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

理解Python中列表,元組,字典,集合的區(qū)別

2019-11-08 01:01:47
字體:
供稿:網(wǎng)友

  列表,元組,字典,集合的區(qū)別是python面試中最常見的一個問題。這個問題雖然很基礎,但確實能反映出面試者的基礎水平。

1.列表(List)

  什么是列表呢?我覺得列表就是我們?nèi)粘I钪薪?jīng)常見到的清單。比如,統(tǒng)計過去一周我們買過的東西,把這些東西列出來,就是清單。由于我們買一種東西可能不止一次,所以清單中是允許有重復項的。如果我們擴大清單的范圍,統(tǒng)計我們過去一周所有的花費情況,那么這也是一個清單,但這個清單里會有類別不同的項,比如我們買東西是一種花費,交水電費也是一種花費,這些項的類型是可以使不同的。python的列表個跟清單的道理是一樣的,特點就是:可重復,類型可不同。類型不同也是跟數(shù)組最本質(zhì)的區(qū)別了。python里的列表用“[]”表示。  

#定義一個列表listA = ['a', 'b', 'c', 1, 2]listA[1] # 'b'# 向 list 中增加元素# 1.使用append 向list 的末尾追加單個元素。(把列表當做堆棧使用——后進(后出))#listA = ['a', 'b', 'c', 1, 2, 3]listA.append(3)# 2.使用 insert 將單個元素插入到list 中。數(shù)值參數(shù)是插入點的索引# 在下標為3處插入一個元素,listA = ['a', 'b', 'c', 'd', 1, 2, 3]listA.insert(3, 'd') # 3.使用 extend 用來連接 list# listA = ['a', 'b', 'c', 'd', 1, 2, 3, 7, 8]listA.extend([7, 8])# 獲取列表的長度PRint len(listA) # 9# 在 list 中搜索listA.index(3) # index 在 list 中查找一個值的首次出現(xiàn)并返回索引值。listA.index('100') # 如果在 list 中沒有找到值,Python 會引發(fā)一個異常。print 5 in listA # 要測試一個值是否在 list 內(nèi),使用 in。如果值存在,它返回 True,否則返為 False 。# 從 list 中刪除元素listA.remove(3) # remove 從 list 中 僅僅 刪除一個值的首次出現(xiàn)。如果在 list 中沒有找到值,Python 會引發(fā)一個異常print listA.pop() # pop 它會做兩件事:刪除 list 的最后一個元素,然后返回刪除元素的值。(把列表當做堆棧使用——(后進)后出)# 還有一種把列表當做隊列使用,最先進入的元素最先釋放(先進先出)# 不過,列表這樣用效率不高。相對來說從列表末尾添加和彈出很快;# 在頭部插入和彈出很慢(因為,為了一個元素,要移動整個列表中的所有元素)。# 遍歷listfor item in listA: print item

  extend (擴展) 與 append (追加) 的看起來類似,但實際上完全不同。

extend 接受一個參數(shù),這個參數(shù)總是一個 list,并且把這個 list 中的每個元素添加到原 list 中。append 接受一個參數(shù),這個參數(shù)可以是任何數(shù)據(jù)類型,并且簡單地追加到 list 的尾部。>>> li = ['a', 'b', 'c'] >>> li.extend(['d', 'e', 'f']) >>> li ['a', 'b', 'c', 'd', 'e', 'f'] >>> len(li) 6 >>> li[-1] 'f' >>> li = ['a', 'b', 'c'] >>> li.append(['d', 'e', 'f']) >>> li ['a', 'b', 'c', ['d', 'e', 'f']] >>> len(li) 4 >>> li[-1] ['d', 'e', 'f']

2.元組(Tuple)

  元組和列表在結(jié)構(gòu)上沒有什么區(qū)別,唯一的差異在于元組是只讀的,不能修改。元組用“()”表示

#定義一個元組tuple1 = (1,2,'a',4,'5',6)# 定義了一個元組之后就無法再添加或修改元組中的元素print tuple1[2] # 'a' 元組的元素都有確定的順序。元組的索引也是以0為基點的print tuple1[-1] # '5' 負的索引從元組的尾部開始計數(shù)print tuple1[1:3] # (2, 'a') 元組也可以進行切片操作。對元組切片可以得到(返回)新的元組,原元組不變# 可以使用 in 運算符檢查某元素是否存在于元組中。print 1 in tuple1 # True#使用for in 進行遍歷元組for item in tuple1: print item# 如果需要獲取item的序號 可以使用下面的遍歷方法:for index in range(len(tuple1)): #range(len(tuple1))就是生成一個自然排序列表 print tuple1[index]# 還可以使用內(nèi)置的enumerate函數(shù)for index, item in enumerate(tuple1): print '%i, %s' % (index, item)

3.字典(Dictionary)

  字典定義了鍵和值之間一對一的關系,但它們是以無序的方式儲存的。 Python 中的 dictionary 像 java 中的 Hashtable 類的實例。定義 Dictionary 使用一對大(花)括號” { } “

Dictionary 不只是用于存儲字符串。Dictionary 的值可以是任意數(shù)據(jù)類型,包括字符串、整數(shù)、對象,甚至其它的 dictionary。在單個 dictionary 里,dictionary 的值并不需要全都是同一數(shù)據(jù)類型,可以根據(jù)需要混用和匹配。# 定義一個字典dict1 = {'name' : 'yeoman', 'age' : 24, 'sex' : 'Male'}dict1['name'] = 'yuanm' # 為一個已經(jīng)存在的 dictionary key 賦值,將簡單覆蓋原有的值。dict1['Age'] = 25 # 在 Python 中是區(qū)分大小寫的 age和Age是完全不同的兩個key# 從字典中刪除元素del dict1['sex'] # del 允許您使用 key 從一個 dictionary 中刪除獨立的元素dict1.clear() # clear 從一個 dictionary 中清除所有元素

4.集合(Set)

  Python的集合(set)和其他語言類似, 是一個無序不重復元素集, 基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯(lián)合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數(shù)學運算.由于集合是無序的,所以,sets 不支持 索引, 分片, 或其它類序列(sequence-like)的操作。

集合也存在不可變形式,frozenset為固定集合.set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。注意:想要創(chuàng)建空集合,你必須使用 set() 而不是 {} ,后者用于創(chuàng)建空字典可以通過一個set函數(shù)轉(zhuǎn)換成集合,如:lst = [ 1, 1, 0]lst_set = set( lst ) #lst_set 為1 , 0tup = (2, 2, 1)tup_set = set( tup) # tup_set為2 , 1for item in lst_set: print item# 使用 set 函數(shù)創(chuàng)建集合list1 = [6, 7, 7, 8, 8, 9]set2 = set(list1)set2.add(10) # 添加新元素print set2 # set([8, 9, 10, 6, 7]) 去掉重復內(nèi)容,而且是無序的set3 = frozenset(list1)#set3.add(10) # 固定集合不能添加元素,會報錯AttributeError: 'frozenset' object has no attribute 'add'### 集合有并集,交集,求差操作### a & b 并集:intersection() 方法返回一個新集合,包含在兩個集合中同時出現(xiàn)的所有元素。### a | b 交集:union() 方法返回一個新集合,包含在兩個 集合中出現(xiàn)的元素。### a - b 差集:difference() 方法返回的新集合中,包含所有在 集合A出現(xiàn)但未在集合B中的元素。### a ^ b 對稱差集:symmetric_difference() 方法返回一個新集合,包含所有只在其中一個集合中出現(xiàn)的元素。# 刪除元素set2.discard(6) # 當元素不存在時,不會引發(fā)異常set2.remove(6) # 與discard的區(qū)別在于,如果沒有要刪除的元素,remove會引發(fā)一個異常set2.pop() # 因為set是無序的,所以pop會隨機的從set中刪除一個元素
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 澜沧| 白山市| 伽师县| 即墨市| 兴隆县| 湘阴县| 六盘水市| 乌拉特前旗| 惠州市| 乳山市| 长垣县| 南京市| 酒泉市| 灌云县| 灵山县| 商洛市| 沙雅县| 宜宾县| 林口县| 密山市| 乐平市| 青海省| 武穴市| 舞钢市| 祁门县| 丁青县| 宁晋县| 桂平市| 山西省| 余庆县| 弋阳县| 工布江达县| 高密市| 建始县| 岑巩县| 游戏| 阿拉尔市| 乐东| 高雄市| 宜兰市| 潍坊市|