Python內建資料結構3

來源:互聯網
上載者:User

標籤:python 列表 元祖 字串 集合 字典

解構

In [8]: lst = [1,2]In [9]: lstOut[9]: [1, 2]In [10]: first,second = lst  #解構In [11]: print(first,second)1 2

按照元素順序,把線性結構的元素賦值給變數


解構的變化

In [21]: lst = list(range(10))In [22]: lstOut[22]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]In [23]: head,*mid,tail = lstIn [24]: headOut[24]: 0In [25]: tailOut[25]: 9In [26]: midOut[26]: [1, 2, 3, 4, 5, 6, 7, 8]In [27]: head,*_,tail = lstIn [28]: headOut[28]: 0In [29]: tailOut[29]: 9


Python的一個慣例, 使用單個底線 _ 表示丟棄該變數


封裝

In [12]: t = 1,2In [13]: tOut[13]: (1, 2)In [14]: type(t)Out[14]: tupleIn [15]: t1 = (1,2)In [16]: t2 = 1,2In [17]: t1Out[17]: (1, 2)In [18]: t2Out[18]: (1, 2)

封裝出來的一定是元祖



集合--沒有重複元素

定義及初始化

In [31]: s = set()In [32]: sOut[32]: set()In [33]: s = {1,2,3}In [34]: sOut[34]: {1, 2, 3}In [35]: s = set(range(5))In [36]: sOut[36]: {0, 1, 2, 3, 4}


集合的操作

增加

In [37]: sOut[37]: {0, 1, 2, 3, 4}In [38]: s.add(9)  #增加單個元素In [39]: sOut[39]: {0, 1, 2, 3, 4, 9}In [40]: s.add(9)  #增加已經存在的元素,什麼也不做In [41]: sOut[41]: {0, 1, 2, 3, 4, 9}In [42]: s.update(range(10,15)) #增加多個元素In [43]: sOut[43]: {0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14}


刪除

In [44]: sOut[44]: {0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14}In [45]: s.remove(1)In [46]: sOut[46]: {0, 2, 3, 4, 9, 10, 11, 12, 13, 14}In [47]: s.pop()Out[47]: 0In [48]: sOut[48]: {2, 3, 4, 9, 10, 11, 12, 13, 14}In [49]: s.pop()Out[49]: 2In [50]: s.pop()Out[50]: 3In [51]: s.pop()Out[51]: 4In [52]: s.pop()Out[52]: 9In [53]: s.pop()Out[53]: 10In [54]: s.pop()Out[54]: 11In [55]: s.discard(13)In [56]: sOut[56]: {12, 14}
  • remove 刪除給定的元素, 元素不存在拋出KeyError

  • discard 刪除給定的元素, 元素不存在,什麼也不做

  • pop 隨機刪除一個元素並返回, 集合為空白,拋出KeyError

  • clear 清空集合


集合不能修改單個元素,不能通過索引尋找,集合沒有訪問單個元素的方法,集合元素沒有順序,元素必須課hash


集合運算

交集、並集、差集、對分差集

In [57]: s1 = {1,2,3}In [58]: s2 = {2,3,4}In [59]: s1.intersection(s2)Out[59]: {2, 3}In [60]: s1 & s2Out[60]: {2, 3}In [61]: In [61]: s1.union(s2)Out[61]: {1, 2, 3, 4}In [62]: s1 | s2Out[62]: {1, 2, 3, 4}In [63]: In [63]: s1.difference(s2)Out[63]: {1}In [64]: s1 - s2Out[64]: {1}In [65]: In [65]: s1.symmetric_difference(s2)Out[65]: {1, 4}In [66]: s1 ^ s2Out[66]: {1, 4}


集合的判斷

In [67]: s1 = {1,2,3,4}In [68]: s2 = {2,3}In [69]: s2.issubset(s1)Out[69]: TrueIn [70]: s1.issuperset(s2)Out[70]: TrueIn [71]: In [71]: In [71]: s1.isdisjoint(s2) # 判斷兩個集合是否有交集, 如果有交集返回False, 沒有交集返回TrueOut[71]: False


字典--是一種key-value結構

定義及初始化

In [72]: d = {}In [73]: d Out[73]: {}In [74]: d = dict{}In [75]: d = dict()In [76]: dOut[76]: {}In [77]: d = {‘a‘:1,‘b‘:2}In [78]: dOut[78]: {‘a‘: 1, ‘b‘: 2}In [79]: d = dict([(‘a‘, 1), (‘b‘, 2)])In [80]: dOut[80]: {‘a‘: 1, ‘b‘: 2}In [81]: d = dict.fromkeys(range(5),‘ab‘)In [82]: dOut[82]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘}


增加、修改

In [83]: dOut[83]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘}In [84]: In [84]: d[‘a‘] = 5In [85]: dOut[85]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5}In [86]: d.update([(‘b‘,5),(‘c‘,6)])In [87]: dOut[87]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5, ‘b‘: 5, ‘c‘: 6}In [88]: d.update({‘d‘:2,‘r‘:6})In [89]: dOut[89]: {0: ‘ab‘, 1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5, ‘d‘: 2, ‘b‘: 5, ‘c‘: 6, ‘r‘: 6}

刪除

In [91]: d.pop(0)Out[91]: ‘ab‘In [92]: dOut[92]: {1: ‘ab‘, 2: ‘ab‘, 3: ‘ab‘, 4: ‘ab‘, ‘a‘: 5, ‘d‘: 2, ‘b‘: 5, ‘c‘: 6, ‘r‘: 6}In [93]: d.popitem()  #隨機刪除Out[93]: (1, ‘ab‘)


字典的遍曆

In [100]: dOut[100]: {‘b‘: 5, ‘c‘: 6, ‘r‘: 6}In [101]: for x in d:     ...:     print(x)     ...:     bcrIn [102]: d.keys()Out[102]: dict_keys([‘b‘, ‘c‘, ‘r‘])In [103]: d.values()Out[103]: dict_values([5, 6, 6])In [104]: d.items()Out[104]: dict_items([(‘b‘, 5), (‘c‘, 6), (‘r‘, 6)])In [105]: for v in d.values():     ...:     print(v)     ...:     566In [106]: for x in d.items():     ...:     print(x)     ...:     (‘b‘, 5)(‘c‘, 6)(‘r‘, 6)In [107]: for k,v in d.items():     ...:     print(k,v)     ...:     b 5c 6r 6


字典的key不可重複,需要可hash

本文出自 “厚德載物” 部落格,謝絕轉載!

Python內建資料結構3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.