溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python set集合介紹

發布時間:2020-05-25 14:00:29 來源:億速云 閱讀:253 作者:鴿子 欄目:編程語言

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

一.set集合簡介

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

1.元素不允許重復

2.set 不記錄元素的添加順序,即是無序的,和字典類似

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Github:www.github.com

 

@File:python_set.py

@Time:2019/11/09 21:25

 

@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.shuopython.com"}

print(type(dict_b))

print(dict_b)


輸出結果:

1

2

3

4

5

6

7

8

set()

<class 'set'>

************************************************************

<class 'set'>

{False, '猿說python'}

************************************************************

<class 'dict'>

{'name': '猿說python', 'url': 'www.shuopython.com'}

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

二.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() — 用于修改當前集合,可以添加新的元素或集合到當前集合中,如果添加的元素在集合中已存在,則該元素只會出現一次,重復的會忽略;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

# 使用花括號構建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集合是否包含'喬峰'字符串:" , ("喬峰" in c)) # 輸出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)


輸出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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}

ef執行并集的結果: {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 集舍的交集。

^:計算兩個集合異或的結果,就是用兩個集合的并集減去交集的元素。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

# 使用花括號構建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)

輸出結果:

1

2

3

4

5

6

7

8

movies集合的元素: {'天龍八部', '射雕英雄傳'}

movies集合是否為c的子集合? True

************************************************************

e集合的元素: {0, 1, 2, 3, 4}

f集合的元素: {3, 4, 5, 6}

ef執行xor的結果: {0, 1, 2, 5, 6}

d集合的元素: {'python基礎', 'python面向對象', 'python爬蟲'}

set()


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女