列表是咱們最之後最經常使用的數據類型之一,經過列表能夠對數據實現最方便的存儲、修改等操做app
#先定義一個列表 letters = ['a', 'b', 'c', 'd', 'e'] letters[1] #輸出:b #列表的索引是從0開始 letters[-1] #輸出:e #也能夠倒着取,-1既倒數第一個元素
letters = ['a', 'b', 'c', 'd', 'e'] #從下標1開始,取到下標3以前,不包括下標3 letters[1:3] #輸出結果:['b', 'c'] #取下標2到-1,-1既倒數第一個,這裏不包括-1 letters[2:-1] #輸出結果:['c', 'd'] letters[0:-1] #若是從0開始取,0能夠不輸入,下面這個和上面同樣的效果 letters[:-1] #輸出結果都是:['a', 'b', 'c', 'd'] #取到結尾,若是想取到最後一個不能用-1,直接忽略既可 letters[1:] #輸出結果:['b', 'c', 'd', 'e'] #若是在後面加一個2,就是在原有的條件下,每隔一個元素獲取一個 letters[1::2] #輸出結果:['b', 'd']
letters = ['a', 'b', 'c', 'd', 'e'] letters.append('f') print(letters) #輸出結果:['a', 'b', 'c', 'd', 'e', 'f'] #就是在列表結尾添加一個新元素
letters = ['a', 'b', 'c', 'd', 'e'] letters.insert(3, 'F') print(letters) #輸出結果:['a', 'b', 'c', 'F', 'd', 'e'] #在下標3的位置插入一個元素
letters = ['a', 'b', 'c', 'd', 'e'] letters[0] = 'A' print(letters) #輸出結果:['A', 'b', 'c', 'd', 'e'] #修改指定下標的元素
letters = ['a', 'b', 'c', 'd', 'e'] #del刪除索引元素 del letters[0] #輸出結果:['b', 'c', 'd', 'e'] #remove刪除指定元素 letters.remove('b') #輸出結果:['a', 'c', 'd', 'e'] #pop刪除列表中最後一個值 letters.pop() #輸出結果:['a', 'b', 'c', 'd']
letters = ['a', 'b', 'c', 'd', 'e'] letters2 = [1, 2, 3, 4] letters.extend(letters2) #輸出結果:['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4] #既把列表letters2的元素都添加到letters中
letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = letters.copy() print(letters_copy) #輸出結果:['a', 'b', 'c', 'd', 'e', ['f', 'g']]
看上面的方法好像確實copy成功了。可是還沒完,咱們在來試試修改copy以後的列表函數
letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = letters.copy() letters_copy[5][1] = 'h' print(letters) print(letters_copy) #輸出結果: #['a', 'b', 'c', 'd', 'e', ['f', 'h']] #['a', 'b', 'c', 'd', 'e', ['f', 'h']]
咱們上面吧 letters_copy 的第5個元素中的 ‘g’改爲‘h’,結果打印結果發現,letters也跟着改變了。性能
其實此處copy是淺copy,只copy列表的第一層,第二層沒有copy,而是指向相同地址spa
第二個列表中的元素只是第一個列表中每個元素的一個引用code
那麼重點來了,咱們想要徹底copy一個列表的時候怎麼辦?固然有辦法blog
引用一個copy模塊,調用copy模塊中的deepcopy方法,既可實現深copy排序
import copy letters = ['a', 'b', 'c', 'd', 'e', ['f', 'g']] letters_copy = copy.deepcopy(letters) letters_copy[5][1] = 'h' print(letters) print(letters_copy) #輸出結果: #['a', 'b', 'c', 'd', 'e', ['f', 'g']] #['a', 'b', 'c', 'd', 'e', ['f', 'h']]
這樣就能夠徹底copy了。索引
letters = ['a', 'b', 'c', 'd', 'e', 'b'] print(letters.count('b')) #輸出結果:2 #統計指定元素在列表中的數量
letters = ['a', '#b', '1f', 'c', 'e', 'd', '承受'] letters.sort() print(letters) #輸出結果:['#b', '1f', 'a', 'c', 'd', 'e', '承受'] #將列表安裝順序重新排序 #排序的順序是,特殊符號-->數字-->字母-->漢字 #這裏要注意,在Python 3中,不一樣數據類型是不能排序的,不然會報錯 letters = ['a', 'b', 'f', 'c', 'e', 'd', 1, 2] letters.sort() #像上面這樣的列表排序就會報錯 #TypeError: unorderable types: int() < str()
letters = ['a', 'b', 'c', 'd', 'e'] letters.reverse() print(letters) #輸出結果:['e', 'd', 'c', 'b', 'a'] #將列表倒序
letters = ['a', 'b', 'c', 'd', 'e'] print(letters.index('b')) #輸出結果:1 #獲取指定元素的下標位置
字典是一種key - value 的數據類型,使用就像咱們用的字典,經過筆劃、字母來查對應頁的詳細內容,一個鍵對應一個值。rem
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' }
這裏要說下字典有哪些特性:get
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } info['name06'] = '黃漢升' print(info) #輸出結果:{'name05': '馬孟起', 'name01': '劉玄德', 'name03': '張翼德', 'name06': '黃漢升', 'name04': '趙子龍', 'name02': '關雲長'}
#直接給一個不存在的鍵賦值就能夠添加一個字典元素了
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } info['name05'] = '黃漢升' print(info) #輸出結果:{'name04': '趙子龍', 'name02': '關雲長', 'name01': '劉玄德', 'name03': '張翼德', 'name05': '黃漢升'} #方法和添加同樣,只要鍵值存在,則直接覆蓋
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } #刪除方法有多種 #1.用pop刪除,用到最多且最好的一種 info.pop('name01') #2.del 內置的刪除函數,和第一種效果同樣 del info['name02'] #3.popitem,這個是在字典中隨機刪除一個元素 info.popitem() print(info) #輸出結果:{'name03': '張翼德', 'name05': '馬孟起'}
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } #in判斷key是否存在 print('name01' in info) #輸出結果:True #get獲取key的值 print(info.get('name02')) #輸出結果:關雲長 #同上獲取key的值 print(info['name02']) #輸出結果:關雲長 #這裏要注意,用這種方法取值,若是key不存在程序會報錯 print(info['name12']) #報錯KeyError: 'name102' #若是使用get則不會報錯,會返回None
heros = { '魏國':{ '曹操':['梟雄','對酒當歌人生幾何'], '司馬懿':['謀略滔天'] }, '蜀國':{ '劉備':['哭'], '關羽':['義薄雲天'] }, '吳國':{ '孫權':['年少有爲'], '周瑜':['既生瑜何生亮'] } } heros['魏國']['曹操'][0] += ',寧肯我負天下人' print(heros['魏國']['曹操']) #輸出結果:['梟雄,寧肯我負天下人', '對酒當歌人生幾何'] #直接在元素中追加了內容
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } #取全部鍵 print(info.keys()) #輸出結果:dict_keys(['name04', 'name01', 'name03', 'name02', 'name05']) #取全部值 print(info.values()) #輸出結果:dict_values(['趙子龍', '劉玄德', '張翼德', '關雲長', '馬孟起'])
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } #字典中不存在key則添加元素,不然返回對應key的值 print(info.setdefault('name01','曹孟德')) #輸出結果:劉玄德 print(info.setdefault('name06','曹孟德')) #輸出結果:曹孟德
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } info2 = { 'name01':'曹孟德', 'name10':'曹子孝' } #對已有鍵值就更新,沒有的鍵值則添加 info.update(info2) print(info) #輸出結果:{'name04': '趙子龍', 'name05': '馬孟起', 'name03': '張翼德', 'name01': '曹孟德', 'name10': '曹子孝', 'name02': '關雲長'}
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } print(info.items()) #輸出結果:dict_items([('name01', '劉玄德'), ('name02', '關雲長'), ('name04', '趙子龍'), ('name03', '張翼德'), ('name05', '馬孟起')]) #字典轉成元組
info = { 'name01': '劉玄德', 'name02': '關雲長', 'name03': '張翼德', 'name04': '趙子龍', 'name05': '馬孟起' } #方法一: 這個是最基本的循環,也是最建議使用的 for key in info: print(key,info[key]) #方法二:這個循環會把字典先轉成列表,而後循環,性能和第一種方法差不少,若是數據量大區最好別用 for k,v in info.items(): print(k,v) #輸出結果: #name01 劉玄德 #name04 趙子龍 #name03 張翼德 #name05 馬孟起 #name02 關雲長
元組其實跟列表差很少,也是存一組數,只是它一旦建立,便不能再修改,因此又叫只讀列表
heros =('曹操','劉備','孫權')
它只有2個方法,一個是count,一個是index