数据结构之集合 集合set

一、集合的作用

   知识点回顾:可变类型是不可hash类型,不可变类型是可hash类型

    作用:去重,关系运算

    定义:可以包含多个元素,用逗号分割,集合的元素遵循三个原则:

      1.每个元素必须是不可变类型(可hash,可作为字典的key)

      2.没有重复的元素

      4.无序

    注意集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无需纠结集合中的单个值

二、常用方法

    in 和 not in

    |并集(print(pythons.union(linuxs)))

    &交集(print(pythons.intersection(linuxs)))

    -差集(print(pythons.difference(linuxs)))

    ^对称差集(print(pythons.symmetric_difference(linuxs)))

    ==

    >,>= ,<,<= 父集(issuperset),子集(issuberset)

        

三、练习

 一.关系运算
  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
  linuxs={'wupeiqi','oldboy','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合
1
2
3
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
# 1. 求出即报名python又报名linux课程的学员名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
   print (pythons & linuxs)
# 2. 求出所有报名的学生名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
   print (pythons | linuxs)
# 3. 求出只报名python课程的学员名字
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
print (pythons  -  linuxs)
# 4. 求出没有同时这两门课程的学员名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
print (pythons ^ linuxs)

  四、方法

1
# ========掌握部分=======
1
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
3
4
5
linuxs.add( 'xiaoxiao' ) #说明set类型的集合是可变类型
linuxs.add([ 1 , 2 , 3 ]) #报错,只能添加不可变类型
print (linuxs)
 
# 2.
1
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
res = linuxs.pop()  #不用指定参数,随机删除,并且会有返回值
print (res)
# 3.
res = linuxs.remove( 'wupeiqi' ) #指定元素删除,元素不存在则报错,单纯的删除,没有返回值,
print (res)
# 4.
res = linuxs.discard( 'egon1111111111' #指定元素删除,元素不存在不报错,单纯的删除,没有返回值,
 
 
# =========了解部分=========
linuxs = { 'wupeiqi' , 'egon' , 'susan' , 'hiayan' }
new_set = { 'xxx' , 'fenxixi' }
linuxs.update(new_set)
print (linuxs)
linuxs.copy()
linuxs.clear()
 
 
 
#解压
 
a, * _ = { 'zzz' , 'sss' , 'xxxx' , 'cccc' , 'vvv' , 'qqq' }
print (a)  

一、集合的作用

   知识点回顾:可变类型是不可hash类型,不可变类型是可hash类型

    作用:去重,关系运算

    定义:可以包含多个元素,用逗号分割,集合的元素遵循三个原则:

      1.每个元素必须是不可变类型(可hash,可作为字典的key)

      2.没有重复的元素

      4.无序

    注意集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无需纠结集合中的单个值

二、常用方法

    in 和 not in

    |并集(print(pythons.union(linuxs)))

    &交集(print(pythons.intersection(linuxs)))

    -差集(print(pythons.difference(linuxs)))

    ^对称差集(print(pythons.symmetric_difference(linuxs)))

    ==

    >,>= ,<,<= 父集(issuperset),子集(issuberset)

        

三、练习

 一.关系运算
  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
  linuxs={'wupeiqi','oldboy','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合
1
2
3
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
# 1. 求出即报名python又报名linux课程的学员名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
   print (pythons & linuxs)
# 2. 求出所有报名的学生名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
   print (pythons | linuxs)
# 3. 求出只报名python课程的学员名字
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
print (pythons  -  linuxs)
# 4. 求出没有同时这两门课程的学员名字集合
1
2
pythons = { 'haiyan' , 'fank' , 'yaling' , 'lalal' , 'haidong' , 'biubiu' }
linuxs = { 'six' , 'wu' , 'dabao' }
1
print (pythons ^ linuxs)

  四、方法

1
# ========掌握部分=======
1
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
3
4
5
linuxs.add( 'xiaoxiao' ) #说明set类型的集合是可变类型
linuxs.add([ 1 , 2 , 3 ]) #报错,只能添加不可变类型
print (linuxs)
 
# 2.
1
linuxs = { 'six' , 'wu' , 'dabao' }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
res = linuxs.pop()  #不用指定参数,随机删除,并且会有返回值
print (res)
# 3.
res = linuxs.remove( 'wupeiqi' ) #指定元素删除,元素不存在则报错,单纯的删除,没有返回值,
print (res)
# 4.
res = linuxs.discard( 'egon1111111111' #指定元素删除,元素不存在不报错,单纯的删除,没有返回值,
 
 
# =========了解部分=========
linuxs = { 'wupeiqi' , 'egon' , 'susan' , 'hiayan' }
new_set = { 'xxx' , 'fenxixi' }
linuxs.update(new_set)
print (linuxs)
linuxs.copy()
linuxs.clear()
 
 
 
#解压
 
a, * _ = { 'zzz' , 'sss' , 'xxxx' , 'cccc' , 'vvv' , 'qqq' }
print (a)  

猜你喜欢

转载自www.cnblogs.com/chairlin/p/12322953.html