1. 程式人生 > 其它 >python容器(列表&元組&字典&集合)

python容器(列表&元組&字典&集合)

技術標籤:pythonpython列表

列表List

特點

  • 有序(下標、索引位置、起始零、結束長度減一)
  • 可重複
  • 可變

構建

  • 字面值

    l = [1,] # 等價於 l = [1]
    l = [1,'python',true]
    
  • 建構函式

    l = list() #元組、range物件
    l = list((1,2))#把元組變為可變的列表
    l = list(range(1,11))
    
  • 指令碼操作符

    l = [1] + [1,2,3]
    l = [1,2] * 5
    

獲取

  • 下標(注意越界問題)

    l[0]
    l[-1]
    l[len(l)-1] 
    

長度

len(l)

修改

l[0] = "python"

分片(仍為List)

l[:]#所有
l[0:]#所有
l[0:5]#左閉右開
l[0::2]#偶數,後一個:代表步長
l[-5:-1]#最後一個為-1
l[-1:-5:-1]#倒敘

抽取賦值

l = ['a','b','c','d','e','f']
l #['a','b','c','d','e','f']
l[1:3:1] = [1]#不匹配的丟棄
l #['a',1,'d','e','f']
l[1:3:1] = [1,2]#匹配的替換
l #['a',1,2,'e','f']
l[1:3:1] = [1,2,3]#連續空間超出範圍追加
l #['a',1,2,3,'e','f']
l[
1:5:2] = [1,2,3]#不連續空間會報錯 l #error

常見方法

  • help(List)獲取 List 有關方法

  • #新增
    l.append() #追加元素(列表作為元素)
    l.extend([1,2]) #追加列表中的元素至末尾
    l.insert(10,'in')#在位置10插入元素'in'
    
    #刪除
    l.remove([1,2,3])#移除元素
    l.pop()#彈出元素
    l.__delitem__(1)#刪除第一個下標為1的元素
    del l[1] #根據下標刪除元素
    l.clear()#清空列表
    
    #修改
    l[1] = 'update'
    
    #獲取
    l.index(1)#第一個匹配項索引位置
    l.count(1)#元素1在l中出現的次數 l.__contains__(1)#是否包含元素1 #遍歷 for x in l : print(x) for i in range(0,len(l)): print(l[i]) #其他 l2 = l1.copy()#複製,l2 = copy.copy(l1) l.reverse()#反轉 l.sort(True)#排序,預設為False,從小到大排序

元組Tuple

特點

  • 有序(下標、索引位置起始零、結束長度減一)
  • 可重複
  • 不可變、安全性高

構建

  • 字面值

    t = (1,) # 若 t = (1) 則 type(t)為int,因為()有括號的含義
    t = (1,'python',true)
    t = 1,'python',true#以逗號隔開預設為元組
    
  • 建構函式

    t = tuple() #列表、range( )函式
    t = tuple([1,2])#安全性高,不可變
    t = tuple(range(1,11))
    
  • 指令碼操作符

    t = (1) + (1,2,3)#元組不可變,但可以相加
    t = (1,2) * 5
    

獲取

  • 下標(注意越界問題)

    t[0]
    t[-1]
    t[len(t)-1] 
    

長度

len(t)

修改

  • 不可修改

分片(與上述相同)

t[:]#所有
t[0:]#所有
t[0:5]#左閉右開
t[0::2]#偶數,後一個:代表步長
t[-5:-1]#最後一個為-1
t[-1:-5:-1]#倒敘

常見方法

  • help(tuple)獲取 Tuple 有關方法

    #獲取
    l.index(1)#第一個匹配項索引位置
    t.count(1)#元素1在t中出現的次數
    l.__contains__(1)#是否包含元素1
    
    #遍歷
    for x in t :
        print(x)      
    for i in range(0,len(t)):
        print(t[i])
        
    #刪除整個元組
    del t
    

字典Dict

特點

  • key - value 鍵值對
  • key:鍵,不可重複(重複會覆蓋),不可變(支援hash演算法)(List不可用於鍵)
  • value:值,可重複
  • 無序

構建

  • key允許hash演算法,不可變,唯一

  • 字面值

    #{'鍵':'值',……:……,^…………}
    d = {'names':'Julius','sex':1,'adress':'ny' }
    
  • 建構函式

    d = dict([('names','Julius'),('sex',1),('adress':'ny')]) 
    d = dict((['names','Julius'],['sex',1],['adress':'ny'])
    d = dict('names'='Julius','sex'=1,'adress'='ny')
    

常見方法

  • #新增
    d['no'] = 10 # 增改'no':10
    d = {}.fromkeys(['a','b','c'],[1,2,3])#批量建立'a':[1,2,3],'b':[1,2,3],'c':[1,2,3]
    d = {}.fromkeys(['a','b','c'],None)#批量建立'a':None,'b':None,'c':None
    
    #刪除
    del d[key]#若無指定鍵則會出現異常
    d.pop(key)#刪除同時,成功返回1,若無指定鍵則會出現錯誤
    d.pop(key,-1)#避免錯誤,返回-1
    d.popitem()#隨機刪除
    
    #修改
    d['no'] = 10 #存在覆蓋,不存在新增
    d.__setitem__('key','value')
    d.update({1:'a',2:'b'})#存在則覆蓋,不存在則新增
    
    #查詢(獲取value)
    'key' in d#返回True Or False
    d['key']#若不存在,則會報錯
    d['key'] if 'key' in d else 'notexist'
    d.get('key')#不存在,返回''(None)
    d.get('key','notexist')#自定義返回值
    
    #獲取
    d.keys()#返回set集合,獲取所有key值
    d.values()#返回set集合,獲取所有value值
    
    #遍歷
    for k,v in d.items() :
        print(k,v)    
    

集合Set

  • 自帶去重

    set([1,1,2,2,3]) ##set顯示[1,2,3]
    

構建

  • 字面值

    s = {'a','b','c',1,2,3,False}#去重,無序
    
  • 建構函式

    s = set(['a','b','c',1,2,3])#列表,去重
    s = set(('a','b','c',1,2,3,2,3))#元組,去重
    s = set({1:'a',2:'b'})#字典,僅保留key,去重        
    

數學運算

#交集
s1 = s1 & s2
s1.intersection(s2)

#並集
s1 = s1 | s2
s1.union(s2)

#差集
s1 = s1 - s2
s1.difference(s2)

#對稱差集((s1-s2)|(s2-s1))
s1 = s1 ^ s2
s1.symmetric_differene(s2)

常見方法

  • #新增
    s.add(1)
    
    #刪除
    s.remove(1)#不存在會報錯
    s.discard(1)#不存在不會報錯
    rand = d.pop()#隨機彈出並返回一個元素
    d.clear#清空
    
    #包裝成定長集合,無add,remove方法
    s = frozenset(('a','b','c',1,2,3,2,3))
    
    #其他
    d1 = d2.copy()#複製拷貝
    d.__contains__(1)#是否包含
    

語句

  • 二分枝簡寫:(分支語句1) if (布林表示式)else(分支語句2)
  • type( )檢視資料型別