Python中幾種資料結構的整理,列表、字典、元組、集合

工程師WWW發表於2017-04-24

列表:shoplist = ['apple', 'mango', 'carrot', 'banana']
字典:di = {'a':123,'b':'something'}
集合:jihe = {'apple','pear','apple'}
元組: t = 123,456,'hello'

1.列表
    空列表:a=[]
    函式方法:a.append(3)       >>>[3]    
          a.extend([3,4,5])       >>>[3,3,4,5]    新增一個列表序列
          a.insert(1,'hello')        >>>[3,'hello',3,4,5]
          a.remove(3)             >>>['hello',3,4,5] 刪除第一個出現的3,沒有3則報錯
          a.pop()              >>>['hello',3,4]
          a.pop(0)              >>>[3,4]
          a.index(4)          >>>1    返回出現的第一個4的下標
          a.count(3)          >>>1    列表中元素3的個數
          a.sort        >>>[3,4]    排序
          a.reverse()        >>>[4,3]    反序
    刪除元素的方法
        a.remove(3)    通過值刪除元素,刪除第一個為引數值得元素
        a.pop()       通過下標刪除元素,預設刪除列表最後一個值,帶引數則刪除下標為引數值的元素
        del a[0]       通過下標刪除元素,
            del a[2:4] 刪除a表下標為2,3的元素
        del a[:]   刪除a列表所有元素
        del a       刪除列表
    列表推導式:
        vec = [2,4,6]    
         [3*x for x in vec if x<6]    >>>[6,12]    3*2,3*4
        vec2 = [1,2,3]
        [x*y for x in vec for y in vec2]    >>>[2,4,6,4,8,12,6,12,18]
    巢狀列表推導式:
        mat = [
        [1,2,3],
        [4,5,6],
        [7,8,9]
        ]
        print ([[row[i] for row in mat] for i in [0,1,2]])    
        >>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    思考:list (zip(mat)) 和 list (zip(*mat))結果會有什麼不同
2.元組
    空元組:t = ()
    元組賦值: t = (123,345)
           t[0]         >>>123
3.字典    
    d = {'Jack':'jack@mail.com','Tom':'Tom@main.com'}
    d['Jack']            >>>'jack@mail.com
    d['Jim'] = 'Jim@sin.com'    >>>{'Jim': 'Jim@sin.com', 'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}             

  del d['Jim']    >>>{'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}
    list(d.keys())    將返回一個字典中所有關鍵字組成的無序列表
    sorted(d.keys()) 將返回一個字典中所有關鍵字組成的排序列表
    dict()    建構函式可以直接從key-value對中建立字典
    dict([('Tim',123),('Tiny',234)])    >>>{'Tiny': 234, 'Tim': 123}    
    推導式建立字典:
        {d2:d2+'@main.com' for d2 in list(d.keys())}
            >>>{'Jack': 'Jack@main.com', 'Tom': 'Tom@main.com'}
    練習:迴圈輸出字典中的鍵值對:
        for name,email in d.items():
            print(name,email)
4.集合
    空集合:A = set() ※想要建立空集合,必須使用set()
    演示:
    basket = {'apple','orange','apple'}    >>>{'orange', 'apple'}    注意重複的元素只顯示一個?
    'apple' in basket              >>>True
    'pear' in basket            >>>False

    集合的數學運算:    
        a = set('ababcdabca')        >>>{'c', 'b', 'a', 'd'}
        b = {'a','b','m'}            >>>{'b', 'a', 'm'}
        a - b        >>>{'c', 'd'}
        b - a        >>>{'m'}
        a | b        >>>{'c', 'd', 'b', 'a', 'm'}
        a & b        >>>{'a','b'}
        a ^ b        >>>{'c','d','m'}
    集合推導式:
       {x for x in a if x not in 'ab'}    >>>{'c','d'}

相關文章