python教程第11課:Python中集合(set)類型詳解

2020-12-17 程式設計師小辰哥

一、定義

set是一個無序且不重複的元素集合。

集合對象是一組無序排列的可哈希的值,集合成員可以做字典中的鍵。集合支持用in和not in操作符檢查成員,由len()內建函數得到集合的基數(大小),用 for 循環迭代集合的成員。但是因為集合本身是無序的,不可以為集合創建索引或執行切片(slice)操作,也沒有鍵(keys)可用來獲取集合中元素的值。

set和dict一樣,只是沒有value,相當於dict的key集合,由於dict的key是不重複的,且key是不可變對象因此set也有如下特性:

1. 不重複

2. 元素為不可變對象

set的創建

本身使用 {} 進行創建,如果 {}裡面沒有元素,默認表示 dict類型,也就是創建空元素的set集合,不能用{}如果要創建一個空元素的set,使用 set()使用{} 裡面可以數值型、字符串、元組, 不可以用字典和集合,裡面可以放多個元素

· 如果使用 set,因為set需要對裡面的元素做遍歷循環,做去重操作,做無序排列,所以要求元素必須可遍歷,所以裡面可以使用字符串、元組、集合、字典

· {}裡面不能用 list集合、set裡面不能用數值型

#set裡面只能有一個參數

a = set()

print(a,type(a))

#字符串

a = set('boy')

print(a,type(a))

#元組

a = set((1,2,3))

print(a,type(a))

#集合

a = set(['a','b','c','d','e'])

print(a,type(a))

#dict

a = set({'k1':'v1','k2':'v2'})

print(a,type(a))

#set

a = set({'k1','k2'})

print(a,type(a))

#默認變成 字典 dict,不可使用

a = {}

#數值型

a = {10}

#元組

a = {(1,2,3)}

#字符串

a= {'boy','girl'}

#因為使用 {} 不會對裡面元素做修改,但是set是一個無序的,而 list是有序的

# a= {['boy','girl']}

print(a,type(a))

三、基本操作

增加元素

裡面可以放 字符串、數值型、元組不可以放list集合和字典

a = {'abc','def'}

a.add(10)

a.add('ghi')

a.add((1,2,3))

print(a)

a = set('abc')

a.add(10)

#不能添加集合

# a.add([10,20])

print(a)

刪除

remove(key)刪除裡面的元素,如果key值不存在,會報錯discard(key)刪除裡面的元素,如果key值不存在,不會報錯pop()刪除默認列印順序的第一個,不能放參數del對象 ,從內存直接清楚掉該變量,不可訪問

a = {11,44,22,88,4,76,33,23}

print(a)

d = 22

ret = a.discard(d)

print('使用discard刪除之後:',a,ret)

a.add(d)

print('重新增加刪除的元素:',a)

ret = a.remove(22)

print('使用remove刪除之後:',a,ret)

a.add(d)

print('重新增加刪除的元素:',a)

ret = a.pop()

print('使用pop刪除之後:',a,ret)

#使用del 直接刪掉變量a,刪除後不可訪問

del a

修改更新

a.update(b) 把a 和 b 合併起來並且去重,然後賦值給a, 做類似修改的操作update做修改的時候,先對 b 進行遍歷循環,然後去重,然後賦值

a = {11,33,22}

b = {22,44,55}

c = [55,66,77]

# update裡面放 一個 set

a.update(b)

# update裡面放一個集合

a.update(c)

# update裡面放一個元組

a.update((10,20,88))

#update裡面放一個set類型

a.update({'a','b'})

# update裡面放一個字典,只會遍歷 key值出來

a.update({'a':'b','aa':'bb'})

print(a)

print(b)

比較

diffrenceset1.difference(x) x可以用 集合、set、字符串、元組,如果使用字典的話,只會取 key值進行比較diffrence 不會改變原始 set的內容diffrence_updateset1.difference_update(x) 先找出set1 和 x不同的元素,不同元素不包含 x裡面的,然後將結果賦值給 set1

x.difference(y)(取x和y的不同元素,包含x的內容,不包含y的內容)x + y 然後去重

x = {11,22,33}

y = {11,44}

#判斷se 裡面的元素 和 y裡面進行比較,以se為主,結果不包含y的值,並且不會改變 se的值

temp = x.difference(y)

x = temp

#如果 y是一個字典數據,那麼只取key值判斷

# temp = x.difference({33:111,44:444})

print('比較的不同元素,不包含y裡面的值:',temp)

print('比較不同之後,不對原始數據修改:',x)

x = {11,22,33}

y = [11,44]

temp = x.difference_update(y)

print('使用difference_update 修改之後的返回:',temp)

print('使用difference_update 比較之後,原始數據變成比較結果:',x)

x.symmetric_difference(y)(取x和y的不同元素,包含x的內容,並且包含y的內容)x + y

x = {11,22,33}

y = {11,44,22}

# x和 y的交集 包含x 裡面的元素 和 y裡面的元素

temp = x.symmetric_difference(y)

print(temp)

print(x)

temp = x.symmetric_difference_update(y)

print(temp)

print(x)

如何取得兩個 集合的 交集

a. intersection(b)(表示a 和 b相同的元素)

#取相同的交集

x = {11,22,33}

y = {11,44,22}

#使用 intersection 取兩個集合的 交集,就是相同的元素

temp = x.intersection(y)

print(temp)

print(x)

#使用intersection_update 先獲取 交集列表,然後賦值給 x

temp = x.intersection_update(y)

print(temp)

print(x)

如何獲取兩個集合的 併集

union表示將ae的元素和x的元素加起來,然後去重,不會將結果直接賦值給xupdate也可以達到獲取併集的效果,但是呢會直接將結果賦值給x

x = {11,22,33}

ae = {11,44}

temp = x.union(ae)

print(temp)

print('使用union獲取併集之後的x:',x)

temp = x.update(ae)

print(temp)

print('使用update 獲取併集之後,賦值給x:',x)

判斷是 子集 或者 父集合的方法

x = {11,22,33}

ae = {11,44}

y = {11,44,22}

# 判斷是否不存在交集(有交集返回 False、不存在交集返回 True)

temp = x.isdisjoint(y)

print('x和y是否存在交集:',temp)

# 判斷x 是否是 y的子集

temp = x.issubset(y)

print('x是否是y的子集:',temp)

temp = ae.issubset(y)

print('ae是否是y的子集:',temp)

#判斷x是否是y的父集合,也就是x是否包含y的每一個元素

temp = x.issuperset(y)

print('x是否是be的父集合,也就是x是否包含be的每一個元素:',temp)

temp = y.issuperset(ae)

print('be是ae的父集合,包含ae裡面的所有元素:',temp)

a 和 b的併集

a 和 b的交集

a 和 b的差集(元素在a中有,但是不在b中)

a 和 b的對稱差集(a 和 b中都有的元素,然後取反)

a = [11,22,33,55,66]

b = [11,44,66]

# | 是或者,表示既可以是a,也可以是b,就是a和b的併集

s = a | b

print(s)

# & 是並且,表示既要滿足 a ,又要滿足b,成為 a 和 b的交集

s = a & b

print( s )

# - 表示從 a裡面移除 和b有相同的元素,剩下的就是a

s = a - b

print(s)

# ^ 揚抑符 表示取 a + b - a和b的交集

s = a ^ b

print(s)

數據類型轉換

set1 = set(range(1))

#將 set 轉換成 list集合

list1 = list(set1)

#將set 轉換成 tuple

tup = tuple(set1)

#將 set轉換成 字符串

str1= str(set1)

print(list1, type(list1))

print(tup, type(tup))

print(str1, type(str1))

相關焦點

  • python中集合set的使用場景概述
    在python中,集合set具有字典key的特點,其元素無序且唯一,可以通過大括號{}或者函數set來創建,用法如下>>> a = set((1, 2, 3))>>> a{1, 2, 3}>>> type(a)<class 'set'>>&
  • python數據類型串講(下)
    在上一篇文章中討論了python標準類型中序列的兩種:列表和元祖,下面我們繼續介紹python的第二種標準類型:字典(dict)。1、字典dict顧名思義,字典就像我們日常生活中使用的新華字典,其作用在於根據索引(拼音或偏旁)快速查找到所需內容,而python中的字典也是如此,python中字典的索引稱為「鍵」(key),由python中不可變的數據類型(如字符串、數值等)構成,具有固定(不可變)、唯一(不可重複)性;python中字典的內容稱為「值」,其可以為python中的任意標準數據類型的一種或多種
  • 「python學習手冊-筆記」003.數值類型
    =2.0Out[13]: False看第三項可以知道,python是支持混合類型的數值比較的.如前面所說,python在進行混合類型的數值運算的時候,會先將其轉換為精度更高的類型,然後再進行計算..所以python中定義了一中新的數據類型Decimal來解決這個問題.
  • Python的集合與字典
    Set(集合)集合(set)是一個無序不重複元素的序列。基本功能是進行成員關係測試和刪除重複元素。可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。創建格式:parame = {value01,value02,...}
  • Python3 實例教程:集合set
    截止今天,我們已經了解了Python中六大數據類型中的數字(number),字符串(string),列表(list),元組(tuple),字典(dict);今天我們來了解下最後一種數據類型:集合set,它是一種無序不重複的序列,使用花括號{ }或者set()方法來創建,元素之間用逗號(,)隔開。
  • Python初級教程(05): 數據類型
    在本教程中,你將了解Python中的各種數據類型。Python中的每個值都有一個數據類型。
  • 002.Python核心數據類型
    (1,2,"brady"),tuple('spam')文件open("egg.txt")集合set("abc"),{'a','b','c'}其他核心類型類型,None,布爾型程序單元類型函數,模塊,類Python實現相關類型已編譯代碼,調用棧跟蹤數字類型Python中的數字類型,除了支持常見的整數和浮點數之外,還有有虛部的附屬,固定精度的十進位數字,
  • python數據結構總結——集合
    python中,列表和元組都是序列的一種,它們的基本特徵,最大區別在於,列表是可變的,而元組則是不可變的。python中還有另外一種序列,叫做集合。python集合集合也是一種序列。它的特點是可變,但是無法通過索引操作。因為集合中的元素是無序的。當試圖通過索引進行操作時,會提示TypeError,類型錯誤。集合中的元素還是不可重複的。當嘗試向一個集合中,添加多個重複元素時,重複元素只會存在一個。
  • Python字典的11個方法超級詳解
    pop 是以字典的 「鍵」 為參數,刪除指定的鍵 / 值對,pop 中的參數不能省略且如果刪除字典中沒有的鍵 / 值對,會報錯。Python 字典 setdefault() 函數和 get()方法 類似語法:dict.setdefault(key, default=None)參數:dict = {'name':'Alice','age
  • python教程第七課:Python基礎之list集合
    Python基礎之list集合今天我們主要來看看如何使用python裡面的list集合1、list概念:list是python裡面的一種數據類型,是一種有序的集合列表,具有可變性。定義:使用[] 的方式定義list集合,names = ['a','b','c'] #定義一個 names的listnames = [] #定義一個空的list集合常用方法:a) 查看list集合的長度使用len()len(names) #返回names集合長度3
  • Python數據類型之集合set
    a = {11,22,33,"aa","bb"}print(a)print(type(a))a = set("12345a7b9")print(a)print(type# symmetric_difference 返回兩個集合中不重複元素的集合# symmetric_difference_update 移除相同元素,添加不同元素# update 可使用其他數據類型添加元素# 添加一個元素,集合添加進來的元素不會自己刪除
  • python中的set(集合)詳解
    集合的方法1.訪問>轉化為迭代器訪問>循環遍歷訪問2.添加<不可變集合不可使用>>set.add(元素A)為集合set添加一個元素A3.刪除<不可變集合不可使用>>set.remove(元素A)刪除集合中的元素A,A不存在報錯>set.discard(元素A)刪除集合中的元素A,A不存在不報錯>set.clear()刪除集合中的所有元素>
  • Python | Python學習之Redis交互詳解
    本篇為redis篇,包含實例演示,主從服務配置,python交互等內容。,且鍵不能重複值的類型分為五種:字符串strin,哈希hash,列表list,集合set,有序集合zsetredis數據操作redis鍵命令redis鍵命令對所有數據類型通用查找鍵:keys [正則表達式]查看全部鍵:keys *判斷鍵是否存在:exists key查看鍵對應的值的類型:type key刪除鍵對應的值的類型:del
  • Python for循環及用法詳解
    > Python 中的循環語句有 2 種,分別是 while 循環和 for 循環,前面章節已經對 while 做了詳細的講解,本節給大家介紹 for 循環,它常用於遍歷字符串、列表、元組、字典、集合等序列類型
  • 如何在python中引入高性能數據類型?
    在一般意義上,python 中的集合是用於存儲數據集合(如 list、dict、tuple 和 set)的容器。這些容器直接構建在 python 中,可以直接調用。collections 模塊提供額外的高性能數據類型,這些數據類型可以提高代碼的性能。讓我們瀏覽一下 collections 模塊最流行的數據類型以及如何使用它們吧!
  • 一個入門級python爬蟲教程詳解
    這篇文章主要介紹了一個入門級python爬蟲教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下
  • python語法基礎
    在這裡推薦幾本基礎的,適合新手查看的入門書籍python簡明教程https://bop.mol.uno/think pythonhttps://cycleuser.gitbooks.io/think-python/content/廖雪峰的python教程https://www.liaoxuefeng.com/wiki/1016959663602400
  • Python Numpy學習教程(一)Python篇
    -material/blob/master/tutorials/python/cs228-python-tutorial.ipynb註:Amusi是一名Python初學者,本教程是對CS231n課程中的python-numpy-tutorial進行翻譯、注釋並做部分修改攥寫而來的。
  • 【微筆記】houdini使用python創建城市教程筆記I
    昨天小編分享了houdini使用python製作城市的教程,講解得非常不錯,不過個人建議大家至少有一些python基礎和houdini python結合基礎學習會比較好,因為課程內容量比較大。小編也在同步學習,今天把第一部分的筆記1-8課 python基礎介紹內容筆記整理分享出來。在CG獵人vip群裡的同學可以獲得pdf版本,作為小福利吧。
  • Python 四大數據類型總結
    基本數據類型數值型Python 中的數據皆是對象,比如被熟知的 int 整型對象、float 雙精度浮點型、bool 邏輯對象,它們都是單個元素。舉兩個例子。集合對象。僅使用一對花括號 {},創建一個 set 對象:s = {1,3,5} # 集合變量Python 的容器類型,list、dict、tuple、set 等能方便地實現強大的功能,下面給出幾個案例。1.