1. 程式人生 > >Python基礎(5)——集合的定義和操作

Python基礎(5)——集合的定義和操作

集合是Python的基本資料型別,在下面這篇文章中,我將簡單介紹一下集合的定義和常見的操作。

1. 集合的定義

  • 集合是無序的,所以不支援下標索引來查詢元素。
  • 在python中,集合和字典一樣,都使用大括號,而且集合中的每個元素都是唯一的。
  • 集合的建立很簡單,只需要在大括號中新增元素,並使用逗號隔開即可。
  • 集合是一種可變的資料型別。
  • 集合的格式:集合名 = {元素1,元素2,元素3...}

如下例項:my_set = {1, 2, 3, 3, 3, 2}實際等價於 my_set = {1, 2, 3}

my_set = {1, 2, 3, 3, 3, 2}
print(my_set)


結果如下:
{1, 2, 3}

定義一個空的集合:  my_set = set()

注意: my_set = {}     表示定義一個空字典,而不是集合

my_set = {}
print(type(my_set))
my_set=set()
print(type(my_set))


結果如下:
<class 'dict'>
<class 'set'>

2. 集合的常見操作  

2.1 > 向集合中新增元素(add, update):

  • add函式是將新增的元素作為一個元素處理
  • update是將新增的元素拆分,做為個體傳入到集合中
my_set = set()
#add函式是將新增的元素作為一個元素處理
my_set.add("abcd123")
print(my_set)

my_set = set()
#update是將新增的元素拆分,做為個體傳入到集合中
my_set.update("abcd123")
print(my_set)


結果如下:
{'abcd123'}
{'b', 'c', '1', '3', 'd', '2', 'a'}

2.2 > 刪除集合中的元素(remove,pop,discard):

 remove ():刪除集合中的具體的值,如果集合中沒有這個值,則會報錯

my_set={"name","age",12,3.14,True}
#刪除集合中的具體的值
my_set.remove(12)
print(my_set)
#如果集合中沒有這個值,則會報錯
my_set.remove(111)
print(my_set)


結果如下:
{True, 3.14, 'age', 'name'}
Traceback (most recent call last):
  File "D:/python_code/St11/test/liebiao.py", line 6, in <module>
    my_set.remove(111)
KeyError: 111

pop() : 隨機刪除集合中的某個元素, 如果集合為空,則程式報錯

my_set={"name","age",12,3.14,True,111}
#隨機刪除集合中的某個元素
my_set.pop()
print(my_set)

my_set1=set()
#如果集合為空,則會報錯
my_set1.pop()
print(my_set1)


結果如下:
{3.14, 'name', 12, 111, 'age'}
Traceback (most recent call last):
  File "D:/python_code/St11/test/liebiao.py", line 7, in <module>
    my_set1.pop()
KeyError: 'pop from an empty set'

discard (): 如果元素存在,直接刪除。 如果元素不存在,程式不會報錯,不做任何操作

my_set={"name","age",12,3.14,True}
#刪除集合中的具體的值
my_set.discard(12)
print(my_set)

my_set={"name","age",12,3.14,True}
#如果集合中沒有這個值,則不做任何操作
my_set.discard(111)
print(my_set)


結果如下:
{True, 3.14, 'age', 'name'}
{True, 3.14, 'age', 12, 'name'}

3. 集合的其他操作

  • 集合的交集(&)
  • 集合的並集(|)
  • 集合的差集(-):在"—"前的集合,而不在"—"後的集合
  • 集合的對稱差集(^):非兩者公有的部分
my_set1={"name","age",12,3.14,True,666}
my_set2={"name","age",12,3.14,True,111,222}

#集合的交集
my_set=my_set1&my_set2
print(my_set)
#集合的並集
my_set=my_set1|my_set2
print(my_set)
#集合的差集,在第一個集合中,不在第二個集合中
my_set=my_set1-my_set2
print(my_set)
#集合的差集,在第二個集合中,不在第一個集合中
my_set=my_set2-my_set1
print(my_set)
#集合的對稱差集,不是兩個集合公有的部分
my_set=my_set1^my_set2
print(my_set)


結果如下:
{True, 'name', 3.14, 12, 'age'}
{True, 'name', 3.14, 12, 111, 666, 'age', 222}
{666}
{222, 111}
{666, 222, 111}