Python容器:列表、元組、字典與集合html
列表:python
1.列表 的建立數據結構
使用[ ] 或者 list()建立列表:empty_list = [ ] 或者 empty_list= list()app
使用list()將其餘數據類型轉換成列表 方括號[ ]列表 圓括號( )元組函數
>>> list('cat') ['c', 'a', 't']
使用[offset]獲取元素測試
>>> marxes = ['Groucho', 'Chico', 'Harpo'] >>> marxes[0] 'Groucho'
包含列表的列表: 列表能夠包含各類類型的元素,包括其餘列表ui
>>> small_birds = ['hummingbird', 'finch'] >>> extinct_birds = ['dodo', 'passenger pigeon', 'Norwegian Blue'] >>> carol_birds = [3, 'French hens', 2, 'turtledoves'] >>> all_birds = [small_birds, extinct_birds, 'macaw', carol_birds]
=================================================================lua
>>> all_birds [['hummingbird', 'finch'], ['dodo', 'passenger pigeon', 'Norwegian Blue'], 'macaw', [3, 'French hens', 2, 'turtledoves']]
獲取列表中字子列表的元素:spa
>>> all_birds[1][0] 'dodo'
二、列表操做code
使用[offset]修改元素
>>> marxes = ['Groucho', 'Chico', 'Harpo'] >>> marxes[2] = 'Wanda' >>> marxes ['Groucho', 'Chico', 'Wanda']
指定範圍並使用切片提取元素
>>> marxes = ['Groucho', 'Chico,' 'Harpo'] >>> marxes[0:2] ['Groucho', 'Chico']
使用append()添加元素至尾部
>>> marxes.append('Zeppo') >>> marxes ['Groucho', 'Chico', 'Harpo', 'Zeppo']
使用extend()或+=合併列表
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo'] >>> others = ['Gummo', 'Karl'] >>> marxes.extend(others) >>> marxes ['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']
使用insert()在指定位置插入元素
>>> marxes.insert(3, 'Gummo') >>> marxes ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo'] >>> marxes.insert(10, 'Karl') >>> marxes ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Karl']
使用del刪除指定位置的元素
del marxes[-1]
使用remove()刪除具備指定值的元素
>>> marxes.remove('Gummo')
使用pop()獲取並刪除指定位置的元素
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo'] >>> marxes.pop() 'Zeppo' >>> marxes ['Groucho', 'Chico', 'Harpo'] >>> marxes.pop(1) 'Chico' >>> marxes ['Groucho', 'Harpo']
使用index()查詢具備特定值的元素位置
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo'] >>> marxes.index('Chico') 1
使用in判斷值是否存在
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo'] >>> 'Groucho' in marxes
使用count()記錄特定值出現的次數:使用count() 能夠記錄某一個特定值在列表中出現的次數
>>> marxes.count('Harpo')
使用join()轉換爲字符串
>>> marxes = ['Groucho', 'Chico', 'Harpo'] >>> ', '.join(marxes) 'Groucho, Chico, Harpo'
使用sort()從新排列元素:列表方法sort() 會對原列表進行排序,改變原列表內容;
通用函數sorted() 則會返回排好序的列表副本,原列表內容不變。
使用len()獲取長度
>>> marxes = ['Groucho', 'Chico', 'Harpo'] >>> len(marxes) 3
使用=賦值,使用copy()複製
>>> a = [1, 2, 3] >>> a [1, 2, 3] >>> b = a >>> b [1, 2, 3] >>> a[0] = 'surprise' >>> a ['surprise', 2, 3]
元組和列表:
在許多地方均可以用元組代替列表,但元組的方法函數與列表相比要少一些——元組沒有
append()、insert(),等等——由於一旦建立元組便沒法修改。既然列表更加靈活,那爲
什麼不在全部地方都使用列表呢?緣由以下所示:
• 元組佔用的空間較小
• 你不會意外修改元組的值
• 能夠將元組用做字典的鍵(詳見3.4 節)
• 命名元組(詳見第6 章「命名元組」小節)能夠做爲對象的替代
• 函數的參數是以元組形式傳遞的
字典:
字典新建:
>>> empty_dict = {}
使用dict() 轉換:
>>> lol = [ ['a', 'b'], ['c', 'd'], ['e', 'f'] ] >>> dict(lol) {'c': 'd', 'a': 'b', 'e': 'f'}
字典中元素的順序是可有可無的,實際存儲順序可能取決於你添加元
素的順序。
能夠對任何包含雙值子序列的序列使用dict(),下面是其餘例子。
包含雙值元組的列表:
>>> lot = [ ('a', 'b'), ('c', 'd'), ('e', 'f') ] >>> dict(lot) {'c': 'd', 'a': 'b', 'e': 'f'}
包含雙值列表的元組:
>>> tol = ( ['a', 'b'], ['c', 'd'], ['e', 'f'] ) >>> dict(tol) {'c': 'd', 'a': 'b', 'e': 'f'}
雙字符的字符串組成的列表:
>>> los = [ 'ab', 'cd', 'ef' ] >>> dict(los) {'c': 'd', 'a': 'b', 'e': 'f'}
雙字符的字符串組成的元組:
>>> tos = ( 'ab', 'cd', 'ef' ) >>> dict(tos) {'c': 'd', 'a': 'b', 'e': 'f'}
使用[key]添加或修改元素
>>> pythons = { ... 'Chapman': 'Graham', ... 'Cleese': 'John', ... 'Idle': 'Eric', ... 'Jones': 'Terry', ... 'Palin': 'Michael', ... } >>> pythons {'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric'} #使用[KEY]值,添加元素 >>> pythons['Gilliam'] = 'Gerry' >>> pythons {'Cleese': 'John', 'Gilliam': 'Gerry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'} #使用[KEY]值,修改元素 >>> pythons['Gilliam'] = 'Terry' >>> pythons {'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}
使用update()合併字典
>>> pythons = { #定義一個字典 ... 'Chapman': 'Graham', ... 'Cleese': 'John', ... 'Gilliam': 'Terry', ... 'Idle': 'Eric', ... 'Jones': 'Terry', ... 'Palin': 'Michael', ... } >>> pythons {'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'} #定義另外一個字典 >>> others = { 'Marx': 'Groucho', 'Howard': 'Moe' } #使用.update(),合併字典 >>> pythons.update(others) >>> pythons {'Cleese': 'John', 'Howard': 'Moe', 'Gilliam': 'Terry', 'Palin': 'Michael', 'Marx': 'Groucho', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}
使用del刪除具備指定鍵的元素
>>> del pythons['Marx'] #刪除字典中的元素 >>> pythons {'Cleese': 'John', 'Howard': 'Moe', 'Gilliam': 'Terry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'} >>> del pythons['Howard'] >>> pythons {'Cleese': 'John', 'Gilliam': 'Terry', 'Palin': 'Michael', 'Chapman': 'Graham', 'Idle': 'Eric', 'Jones': 'Terry'}
使用clear()刪除全部元素
使用clear(),或者給字典變量從新賦值一個空字典({})能夠將字典中全部元素刪除:
>>> pythons.clear() >>> pythons {} >>> pythons = {} >>> pythons {}
使用in判斷是否存在
>>> pythons = {'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'} #測試XXX是否在字典中 >>> 'Chapman' in pythons True
使用[key]獲取元素
>>> pythons['Cleese'] 'John'
keys()、values()、items()、=、copy()
使用keys()獲取全部鍵、使用values()獲取全部值、使用items()獲取全部鍵值、使用=賦值,使用copy()複製
>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'} >>> signals.keys() #使用keys()獲取全部鍵 dict_keys(['green', 'yellow', 'red']) >>> list( signals.keys() ) ['green', 'yellow', 'red'] >>> list( signals.values() )#使用values()獲取全部值 ['go', 'go faster', 'smile for the camera'] >>> list( signals.items() ) #使用items()獲取全部鍵值對 [('green', 'go'), ('yellow', 'go faster'), ('red', 'smile for the camera')] >>> save_signals = signals #使用=賦值 >>> signals['blue'] = 'confuse everyone' >>> save_signals {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'} #對字典內容進行的修改會反映到全部與之相關聯的變量名上 #================================= # 使用copy()複製 >>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'} >>> original_signals = signals.copy() >>> signals['blue'] = 'confuse everyone' >>> signals {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera', 'blue': 'confuse everyone'} >>> original_signals {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}
集合:
一、使用set()建立集合
>>> empty_set = set() >>> empty_set set() >>> even_numbers = {0, 2, 4, 6, 8} >>> even_numbers {0, 8, 2, 4, 6} >>> odd_numbers = {1, 3, 5, 7, 9} >>> odd_numbers {9, 3, 1, 5, 7} #集合中的元素是無序的
二、使用set()將其餘類型轉換爲集合
>>> set( 'letters' ) {'l', 'e', 't', 'r', 's'} #轉換之後,重複的元素會去重
用列表創建集合:
>>> set( ['Dasher', 'Dancer', 'Prancer', 'Mason-Dixon'] ) {'Dancer', 'Dasher', 'Prancer', 'Mason-Dixon'}
再試試元組:
>>> set( ('Ummagumma', 'Echoes', 'Atom Heart Mother') ) {'Ummagumma', 'Atom Heart Mother', 'Echoes'} #使用元組創建集合
當字典做爲參數傳入set() 函數時,只有鍵會被使用:
>>> set( {'apple': 'red', 'orange': 'orange', 'cherry': 'red'} ) {'cherry', 'apple', 'orange'}
使用in測試值是否存在
>>> drinks = { 'martini': {'vodka', 'vermouth'}, 'black russian': {'vodka', 'kahlua'}, 'white russian': {'cream', 'kahlua', 'vodka'}, 'manhattan': {'rye', 'vermouth', 'bitters'}, 'screwdriver': {'orange juice', 'vodka'} } >>> for name, contents in drinks.items(): # 使用IN值測試值是否存在 if 'vodka' in contents : # 使用IN值測試值是否存在 print(name) martini black russian white russian screwdriver
>>> for name, contents in drinks.items(): if 'vodka' in contents and not ('vermouth' in contents or 'cream' in contents): print(name) black russian screwdriver
合併及運算符
交集運算:& 或者 x.intersection
>>> a = {1,2} >>> b = {3,4} >>> a & b set() >>> a.intersection(b) set()
異或運算
#使用^ 或者symmetric_difference() 能夠得到兩個集合的異或集 >>> a ^ b {1, 3} >>> a.symmetric_difference(b) {1, 3} #使用<= 或者issubset() 能夠判斷一個集合是不是另外一個集合的子集(第一個集合的全部 元素都出如今第二個集合中): >>> a = {1,3} >>> b = {2,4} >>> c = {1} >>> d = {2} >>> a <= b False >>> b <= a False >>> c <= a True >>> c <= b False >>> d <= a False >>> d <= b # 超集與子集正好相反(第二個集合的全部元素都出如今第一個集合中),使用>= 或者 issuperset() 能夠進行判斷: >>> a >= b False >>> a >= c True >>> a >=d False # 子集 真子集 >>> a > a False >>> a < a False >>> d > d False >>> d < d False >>> d == d True >>> a >= a True >>> d >= d True >>> a <= a True >>> a < a False >>> a > a False
字典與集合:
用方括號([])建立列表,
使用逗號建立元組(,)
使用花括號({})建立字典
在每一種類型中,均可以經過方括號對單個元素進行訪問:
自定義數據結構:
在建立自定義結構的過程當中,惟一的限制來自於內置數據類型自己。
例如:字典的鍵必須爲不可變對象,因此列表、字典以及集合都不能做爲字典的鍵,可是元組能夠做爲字典的鍵。
原文出處:https://www.cnblogs.com/jingle007/p/11127300.html