1. 程式人生 > 其它 >Python set集合 - Python零基礎入門教程

Python set集合 - Python零基礎入門教程

目錄

零基礎 Python 學習路線推薦 :Python 學習目錄>>Python 基礎入門

Python 變數中除了以前文章所提到的整形 int / 浮點數 float / 布林值 bool /列表 list/字典 dict 之外,還有一個型別我們還沒有做詳細介紹,這個變數型別就是集合 set。

一.set 集合簡介

Python set 集合使用大括號 { } 表示,與字典 dict 不同的是 set 集合並沒有 key / value 鍵值對,主要有以下兩個特點:

  • 1.元素不允許重複;
  • 2.set 不記錄元素的新增順序,即是無序的,和字典類似;
# !usr/bin/env python

  # -_- coding:utf-8 \__-

  """
  @Author:猿說程式設計
  @Blog(個人部落格地址): www.codersrc.com
  @File:Python set 集合.py
  @Time:2021/04/04 11:00
  @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

  """

  # 建立一個空集合 set
  set_a=set()
  # 列印集合 set
  print(set_a)
  # 檢視型別
  print(type(set_a))
  print("*\*\*"*20)

  # 建立一個集合
  set_b={"猿說 python",False}
  print(type(set_b))
  print(set_b)
  print("*\*\*"*20)

  # 建立一個字典
  dict_b={"name":"猿說 python","url":"www.codersrc.com"}
  print(type(dict_b))
  print(dict_b)

  '''
  輸出結果:

  set()
  <class 'set'>

  ***

  <class 'set'>
  {False, '猿說 python'}

  ***

  <class 'dict'>
  {'name': '猿說 python', 'url': 'www.codersrc.com'}
  '''

程式碼分析:觀察上面程式碼,雖然字典 dict 和 集合 set 都是由 {} 構成,注意字典由鍵值對 key / value 構成,而集合確是由一個一個數據構成,和列表 list 的元素類似!

二.set 集合常用函式

  • add — 向 set 集合中新增元素;
  • remove— 刪除元素,如果集合中不包含被刪除的元素,remove() 方法會報出 KeyError 異常;
  • discard — 刪除元素,如果集合中不包含被刪除的元素,不會有任何提示或者 異常;
  • clear— 就是清空白 set 集合;
  • copy— 拷貝一個集合;
  • **difference**— 返回多個集合的差集;
  • difference_update
    — 移除集合中的元素,該元素在指定的集合也存在;
  • intersection— 返回集合的交集,不改變集合本身,而是返回兩個集合的交集;
  • intersection_update— 返回集合的交集,會通過交集運算改變第一個集合;
  • isdisjoint— 判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False;
  • issubset— 判斷指定集合是否為該方法引數集合的子集;
  • issuperset— 判斷該方法的引數集合是否為指定集合的子集;
  • pop— 隨機移除元素;
  • symmetric_difference— 移除當前集合中在另外一個指定集合相同的元素,並將另外一個指定集合中不同的元素插入到當前集合中;
  • union— 返回兩個集合的並集;
  • update— 用於修改當前集合,可以新增新的元素或集合到當前集合中,如果新增的元素在集合中已存在,則該元素只會出現一次,重複的會忽略;
  # !usr/bin/env python

  # -_- coding:utf-8 \__-

  """
  @Author:猿說程式設計
  @Blog(個人部落格地址): www.codersrc.com
  @File:Python set 集合.py
  @Time:2021/04/04 11:00
  @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

  """

  # 使用花括號構建 set 集合
  c={'喬峰',"段譽","虛竹","天龍八部","射鵰英雄傳"}
  # 新增元素
  c.add("天山姥姥")
  c.add(6)
  print("c 集合的元素個數為:",len(c))
  print(c)
  # 刪除指定元素
  c.remove("天山姥姥")
  print(c)
  print("c 集合的元素個數為:",len(c))
  print("*\*\*"*20)

  # 判斷是否包含指定字串
  print("c 集合是否包含'喬峰'字串:",("喬峰"inc))# 輸出 True
  print("*\*\*"*20)

  # 使用 set()函式(構造器)來建立 set 集合
  movies=set()
  movies.add("天龍八部")
  movies.add("射鵰英雄傳")
  print("movies 集合的元素:",movies)
  #issubset()方法判斷是否為子集合
  print("movies 集合是否為 c 的子集合?",movies.issubset(c))# 輸出 False

  #issuperset()方法判斷是否為父集合
  #issubset 和 issuperset 其實就是倒過來判斷
  print("c 集合是否完全包含 books 集合?",c.issuperset(movies))# 輸出 False
  # 用 c 集合減去 books 集合裡的元素,不改變 c 集合本身
  result1=c-movies
  print(result1)

  #difference()方法也是對集合做減法,與用-執行運算的效果完全一樣
  result2=c.difference(movies)
  print(result2)

  # 用 c 集合減去 books 集合裡的元素,改變 c 集合本身
  c.difference_update(movies)
  print("c 集合的元素:",c)

  # 刪除 c 集合裡的所有元素
  c.clear()
  print("c 集合的元素:",c)
  print("*\*\*"*20)

  # 直接建立包含元素的集合
  d={"python 面向物件",'python 基礎','python 爬蟲'}
  print("d 集合的元素:",d)

  #intersection()方法也是獲取兩個集合的交集,與用&執行運算的效果完全一樣
  inter2=d.intersection(movies)
  print(inter2)
  # 計算兩個集合的交集,改變 d 集合本身
  d.intersection_update(movies)
  print("d 集合的元素:",d)
  print("*\*\*"*20)

  # 將 range 物件包裝成 set 集合
  e=set(range(5))
  f=set(range(3,7))
  print("e 集合的元素:",e)
  print("f 集合的元素:",f)

  # 計算兩個集合的並集,不改變 e 集合本身
  un=e.union(f)
  print('e 和 f 執行並集的結果:',un)
  # 計算兩個集合的並集,改變 e 集合本身
  e.update(f)
  print('e 集合的元素:',e)

  '''
  輸出結果:

  c 集合的元素個數為: 7
  {'天龍八部', 6, '虛竹', '喬峰', '段譽', '天山姥姥', '射鵰英雄傳'}
  {'天龍八部', 6, '虛竹', '喬峰', '段譽', '射鵰英雄傳'}
  c 集合的元素個數為: 6

  ***

  c 集合是否包含'喬峰'字串: True

  ***

  movies 集合的元素: {'天龍八部', '射鵰英雄傳'}
  movies 集合是否為 c 的子集合? True
  c 集合是否完全包含 books 集合? True
  {'喬峰', '段譽', 6, '虛竹'}
  {'喬峰', '段譽', 6, '虛竹'}
  c 集合的元素: {6, '虛竹', '喬峰', '段譽'}
  c 集合的元素: set()

  ***

  d 集合的元素: {'python 爬蟲', 'python 基礎', 'python 面向物件'}
  set()
  d 集合的元素: set()

  ***

  e 集合的元素: {0, 1, 2, 3, 4}
  f 集合的元素: {3, 4, 5, 6}
  e 和 f 執行並集的結果: {0, 1, 2, 3, 4, 5, 6}
  e 集合的元素: {0, 1, 2, 3, 4, 5, 6}
  '''

三.set 集合運算子

  • <=:相當於呼叫 issubset() 方法,判斷前面的 set 集合是否為後面的 set 集合的子集合。
  • >=:相當於呼叫 issuperset() 方法,判斷前面的 set 集合是否為後面的 set 集合的父集合。
  • :相當於呼叫 difference() 方法,用前面的 set 集合減去後面的 set 集合的元素。
  • &:相當於呼叫 intersection() 方法,用於獲取兩個 set 集舍的交集。
  • ^:計算兩個集合異或的結果,就是用兩個集合的並集減去交集的元素。
  # !usr/bin/env python

  # -_- coding:utf-8 \__-

  """
  @Author:猿說程式設計
  @Blog(個人部落格地址): www.codersrc.com
  @File:Python set 集合.py
  @Time:2021/04/04 11:00
  @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

  """

  # 使用花括號構建 set 集合
  c={'喬峰',"段譽","虛竹","天龍八部","射鵰英雄傳"}

  # 使用 set()函式(構造器)來建立 set 集合
  movies=set()
  movies.add("天龍八部")
  movies.add("射鵰英雄傳")
  print("movies 集合的元素:",movies)
  #issubset()方法與<=運算子效果相同
  print("movies 集合是否為 c 的子集合?",(movies<=c))# 輸出 False
  print("*\*\*"*20)

  e=set(range(5))
  f=set(range(3,7))
  print("e 集合的元素:",e)
  print("f 集合的元素:",f)
  # 對兩個集合執行異或運算
  xor=e^f
  print('e 和 f 執行 xor 的結果:',xor)

  # 直接建立包含元素的集合
  d={"python 面向物件",'python 基礎','python 爬蟲'}
  print("d 集合的元素:",d)
  # 計算兩個集合的交集,不改變 d 集合本身
  inter1=d&movies
  print(inter1)

  '''
  輸出結果:

  movies 集合的元素: {'天龍八部', '射鵰英雄傳'}
  movies 集合是否為 c 的子集合? True

  ***

  e 集合的元素: {0, 1, 2, 3, 4}
  f 集合的元素: {3, 4, 5, 6}
  e 和 f 執行 xor 的結果: {0, 1, 2, 5, 6}
  d 集合的元素: {'python 基礎', 'python 面向物件', 'python 爬蟲'}
  set()

  '''

四.猜你喜歡

  1. Python 字串/列表/元組/字典之間的相互轉換
  2. Python 區域性變數和全域性變數
  3. Python type 函式和 isinstance 函式區別
  4. Python is 和 == 區別
  5. Python 可變資料型別和不可變資料型別
  6. Python 淺拷貝和深拷貝
  7. Python 遞迴函式
  8. Python sys 模組
  9. Python 列表 list
  10. Python 元組 tuple
  11. Python 字典 dict
  12. Python 條件推導式
  13. Python 列表推導式
  14. Python 字典推導式
  15. Python 函式宣告和呼叫
  16. Python 不定長引數 *argc/**kargcs

未經允許不得轉載:猿說程式設計 » Python set 集合

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!