python 基礎---集合

來源:互聯網
上載者:User

標籤:size   [1]   list   bsp   round   format   二層   基礎   運算   

集合(set):可變的資料類型,他裡面的元素必須是不可變的資料類型,無序,不重複。{}
 1 set1 = set({1,2,3}) 2 print(set1) 3  4 #增 add,update 5 set1 = {‘alex‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘} 6 set1.add(‘女神‘) 7 print(set1) #無序 8 #{‘女神‘, ‘egon‘, ‘barry‘, ‘wusir‘, ‘alex‘, ‘ritian‘} 9 10 set1.update(‘男神‘) #迭代增加,相當於list中的extend,按對象一個一個加11 print(set1)12 #{‘男‘, ‘女神‘, ‘egon‘, ‘barry‘, ‘wusir‘, ‘alex‘, ‘神‘, ‘ritian‘}13 14 #刪  pop,remove,del, clear15 set1.pop()  #隨機刪除,有傳回值16 print(set1)17 18 set1.remove(‘元素‘)  #按元素刪除19 print(set1)20 21 set1.clear()    #清空集合22 print(set1)23 24 del set1      #刪除集合25 print(set1)26 27 #  查28 for i in set1:29     print(i)

 交集  &

 並集  |

 差集  -

 反交集  ^

子集和超集
1 set1 = {1,2,3}2 set2 = {1,2,3,4,5,6}3 4 print(set1 < set2)5 print(set1.issubset(set2)) # 這兩個相同,都是說明set1是set2子集。6 7 print(set2 > set1)8 print(set2.issuperset(set1)) # 這兩個相同,都是說明set2是set1超集。

 集合可變,元素不可變,使用frozenset變成集合不可變

1 s = frozenset(‘barry‘)2 print(s,type(s))3 for i in s:4     print(i)

 

深淺copy

1 #賦值運算2 l1 = [1,2,3]3 l2 = l14 l1.append(‘a‘)5 print("{}\t\t{}".format(l1,l2))6 #[1, 2, 3, ‘a‘]        [1, 2, 3, ‘a‘]
 1 #淺copy 2 l1 = [1,2,3] 3 l2 = l1.copy() 4 print(l1,l2) 5 print(id(l1),id(l2)) 6 l2.append(‘a‘) 7 print(l1,l2) 8 """ 9 [1, 2, 3] [1, 2, 3]10 1848031189768 184803118727211 [1, 2, 3] [1, 2, 3, ‘a‘]12 """
 1 l1 = [1,2,[4,5,6],3] 2 l2 = l1.copy() 3 print(l1,id(l1)) 4 print(l2,id(l2)) 5 l1.append(‘a‘) 6 print(l1,l2) 7 l1[2].append(‘a‘) 8 print(l1,l2) 9 print(id(l1[2]))10 print(id(l2[2]))11 """12 [1, 2, [4, 5, 6], 3] 231810433466413 [1, 2, [4, 5, 6], 3] 231810395143214 [1, 2, [4, 5, 6], 3, ‘a‘] [1, 2, [4, 5, 6], 3]15 [1, 2, [4, 5, 6, ‘a‘], 3, ‘a‘] [1, 2, [4, 5, 6, ‘a‘], 3]16 231810433716017 231810433716018 19 """

對於淺copy來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同一個記憶體位址,所以,對於第二層以及更深的層數來說,保持一致性。

深Copy

 1 import copy 2 l1 = [1,2,[4,5,6],3] 3 l2 = copy.deepcopy(l1) 4 print(l1,id(l1)) 5 print(l2,id(l2)) 6 l1[2].append(‘a‘) 7 print(l1,l2) 8  9 l1 = [1,[1],2,3,4]10 l2 = l1[:]11 l1[1].append(‘a‘)12 13 print(l1,id(l1))14 print(l2,id(l2))

對於深copy來說,兩個是完全獨立的,改變任意一個的任何元素(無論多少層),另一個絕對不改變。

 

python 基礎---集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.