Python學習,第五課 - 列表、字典、元組操做

本篇主要詳細講解Python中經常使用的列表、字典、元組相關的操做

 1、列表

 列表是咱們最之後最經常使用的數據類型之一,經過列表能夠對數據實現最方便的存儲、修改等操做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']

 

 

追加 append

letters = ['a', 'b', 'c', 'd', 'e']
letters.append('f')
print(letters)
#輸出結果:['a', 'b', 'c', 'd', 'e', 'f']
#就是在列表結尾添加一個新元素

 

 

插入 insert

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']

 

 

擴展 extend

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了。索引

 

統計 count

letters = ['a', 'b', 'c', 'd', 'e', 'b']
print(letters.count('b'))
#輸出結果:2
#統計指定元素在列表中的數量

 

 

排序 sort

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()

 

 

反轉 reverse

letters = ['a', 'b', 'c', 'd', 'e']
letters.reverse()
print(letters)
#輸出結果:['e', 'd', 'c', 'b', 'a']
#將列表倒序

 

 

獲取下標 index

letters = ['a', 'b', 'c', 'd', 'e']
print(letters.index('b'))
#輸出結果:1
#獲取指定元素的下標位置

 

 

 

2、字典

字典是一種key - value 的數據類型,使用就像咱們用的字典,經過筆劃、字母來查對應頁的詳細內容,一個鍵對應一個值。rem

語法以下:

info = {
    'name01': '劉玄德',
    'name02': '關雲長',
    'name03': '張翼德',
    'name04': '趙子龍',
    'name05': '馬孟起'
}

 

這裏要說下字典有哪些特性:get

  • 字典是無序的,因此字典中元素每次的位置均可能變化
  • 字典中key必須是惟一的,因此字典的鍵天生就去重了 

 

增長

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(['趙子龍', '劉玄德', '張翼德', '關雲長', '馬孟起'])

 

 

setdefault 函數

info = {
    'name01': '劉玄德',
    'name02': '關雲長',
    'name03': '張翼德',
    'name04': '趙子龍',
    'name05': '馬孟起'
}
#字典中不存在key則添加元素,不然返回對應key的值
print(info.setdefault('name01','曹孟德'))
#輸出結果:劉玄德

print(info.setdefault('name06','曹孟德'))
#輸出結果:曹孟德

 

 

update 函數

info = {
    'name01': '劉玄德',
    'name02': '關雲長',
    'name03': '張翼德',
    'name04': '趙子龍',
    'name05': '馬孟起'
}
info2 = {
    'name01':'曹孟德',
    'name10':'曹子孝'
}
#對已有鍵值就更新,沒有的鍵值則添加
info.update(info2) 
print(info)
#輸出結果:{'name04': '趙子龍', 'name05': '馬孟起', 'name03': '張翼德', 'name01': '曹孟德', 'name10': '曹子孝', 'name02': '關雲長'}

 

 

items

info = {
    'name01': '劉玄德',
    'name02': '關雲長',
    'name03': '張翼德',
    'name04': '趙子龍',
    'name05': '馬孟起'
}
print(info.items())
#輸出結果:dict_items([('name01', '劉玄德'), ('name02', '關雲長'), ('name04', '趙子龍'), ('name03', '張翼德'), ('name05', '馬孟起')])
#字典轉成元組

 

 

循環遍歷字典dict

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 關雲長

 

 

3、元組

元組其實跟列表差很少,也是存一組數,只是它一旦建立,便不能再修改,因此又叫只讀列表

 

語法:

heros =('曹操','劉備','孫權')

它只有2個方法,一個是count,一個是index

相關文章
相關標籤/搜索