python3 第十五章,python3

來源:互聯網
上載者:User

python3 第十五章,python3

python的官網裡對集合的描述是:

Python also includes a data type for sets. A set is an unordered collection with no duplicate elements. Basic uses include membership testing and eliminating duplicate entries. Set objects also support mathematical operations like union, intersection, difference, and symmetric difference.

Python還包括用於集合的資料類型。集合是沒有重複元素的無序容器。基本用法包括成員資格測試和消除重複條目。集合對象也支援數學運算,如並,交,差和對稱差。

 

特點:

  • 集合是一個無序的,不重複的資料群組合
  • 把一個列表變成集合,就自動去重了
  • 關係測試,測試兩組資料之前的交集、差集、並集等關係

 

1、建立

用花括弧或者set()函數可以用來建立集合。注意,你必須使用set()建立一個空的集合,而不能用{},後面這種寫法建立一個空的字典

執行個體:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括弧的方式建立一個集合set2 = set('abracadabra')  # 用set()的方式建立一個集合set3 = set()  # 建立一個空的集合print(basket)

以上代碼,輸出:

{'banana', 'orange', 'apple', 'pear'}

細心對照一下,你會發現,自動去除了重複,值得一提的是顯示的順序並不表示Sets是有序的

 

2、添加元素

通過add(key)方法可以添加元素到set中,可以重複添加,但不會有效果:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括弧的方式建立一個集合print('原來的basket:', basket)basket.add('apple')  # 添加一個重複的print('添加一個重複項後:', basket)basket.add('watermelon')  # 添加一個不重複的print('添加一個不重複項後:', basket)

以上代碼,輸出:

原來的basket: {'apple', 'banana', 'pear', 'orange'}添加一個重複項後: {'apple', 'banana', 'pear', 'orange'}添加一個不重複項後: {'banana', 'apple', 'watermelon', 'orange', 'pear'}

 

3、刪除元素

可通過remove(key)方法可以刪除元素:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括弧的方式建立一個集合print('原來的basket:', basket)basket.remove('apple')  # 刪除 'apple'print('刪除 \'apple\':', basket)

以上代碼,輸出:

原來的basket: {'apple', 'pear', 'banana', 'orange'}刪除 'apple': {'pear', 'banana', 'orange'}

 

set和dict的唯一區別僅在於沒有儲存對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重複元素”。試試把list放入set,看看是否會報錯。

 

set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作,我們通過執行個體來示範:

A = {'apple', 'orange',  'pear',  'banana'}  # 用花括弧的方式建立一個集合B = {'apple', 'orange',  'watermelon'}C = {'apple', 'orange'}D = {'c++', 'python'}print('集合A:', A)print('集合B:', B)print('A、B的交集:', A.intersection(B))  # 交集print('A、B的並集:', A.union(B))  # 並集print('A、B的差集:', A.difference(B))  # 差集 (項在A中,但不在B中)print('A、B的對稱差集:', A.symmetric_difference(B))  # 對稱差集(項在A或B中,但不會同時出現在二者中)# 子集(判斷A是否包含了B裡面的所有值)print('B是A的子集?', B.issubset(A))print('C是A的子集?', C.issubset(A))# 父集(判斷A是否為B的父集)print('A是B的父集?', A.issuperset(B))print('A是C的父集?', A.issuperset(C))# 無交集(判斷兩個集合是否完全沒有任何交集)print('A與D是否有交集?', A.isdisjoint(D))print('A與B是否有交集?', A.isdisjoint(B))print()  # 輸出空行print()  # 輸出空行print('另一種寫法')print('集合A:', A)print('集合B:', B)#  另一種寫法print('A、B的交集 => A & B:', A & B)  # 交集print('A、B的並集 => A | B:', A | B)  # 並集print('A、B的差集 => A - B:', A - B)  # 差集(項在A中,但不在B中)print('A、B的對稱差集 => A ^ B:', A ^ B)  # 對稱差集(項在A或B中,但不會同時出現在二者中)

以上代碼,輸出:

集合A: {'apple', 'orange', 'pear', 'banana'}集合B: {'apple', 'orange', 'watermelon'}A、B的交集: {'apple', 'orange'}A、B的並集: {'apple', 'watermelon', 'pear', 'orange', 'banana'}A、B的差集: {'pear', 'banana'}A、B的對稱差集: {'watermelon', 'pear', 'banana'}B是A的子集? FalseC是A的子集? TrueA是B的父集? FalseA是C的父集? TrueA與D是否有交集? TrueA與B是否有交集? False另一種寫法集合A: {'apple', 'orange', 'pear', 'banana'}集合B: {'apple', 'orange', 'watermelon'}A、B的交集 => A & B: {'apple', 'orange'}A、B的並集 => A | B: {'apple', 'watermelon', 'pear', 'orange', 'banana'}A、B的差集 => A - B: {'pear', 'banana'}A、B的對稱差集 => A ^ B: {'watermelon', 'pear', 'banana'}

聯繫我們

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