189 8069 5689

pythonset集合介绍-创新互联

在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(个人博客地址): 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

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32


输出结果:

set()

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

{False,'猿说python'}

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

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

1

2

3

4

5

6

7

8

代码分析:观察上面代码,虽然字典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() — 用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略;

# 使用花括号构建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)

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


输出:

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}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23


 三.set集合运算符

<=:相当于调用 issubset() 方法,判断前面的 set 集合是否为后面的 set 集合的子集合。

>=:相当于调用 issuperset() 方法,判断前面的 set 集合是否为后面的 set 集合的父集合。

–:相当于调用 difference() 方法,用前面的 set 集合减去后面的 set 集合的元素。

&:相当于调用 intersection() 方法,用于获取两个 set 集舍的交集。

^:计算两个集合异或的结果,就是用两个集合的并集减去交集的元素。

# 使用花括号构建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

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

输出结果:

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

2

3

4

5

6

7

8

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:pythonset集合介绍-创新互联
网站URL:http://cdxtjz.cn/article/djsohj.html

其他资讯