一、集合的作用
知识点回顾:可变类型是不可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)
1
2
3
4
5
6
7
8
9
10
11
12
|
>,>
=
,<,<
=
set1
=
{
1
,
2
,
3
,
4
,
5
}
set2
=
{
1
,
2
,
3
,
4
}
print
(set1 >
=
set2)
print
(set1.issuperset(set2))
set1
=
{
1
,
2
,
3
,
4
,
5
}
set2
=
{
1
,
2
,
3
}
print
(set1<
=
set2)
print
(set1.issubset(set2))
|
三、练习
一.关系运算
有如下两个集合,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)
1
2
3
4
5
6
7
8
9
10
11
12
|
>,>
=
,<,<
=
set1
=
{
1
,
2
,
3
,
4
,
5
}
set2
=
{
1
,
2
,
3
,
4
}
print
(set1 >
=
set2)
print
(set1.issuperset(set2))
set1
=
{
1
,
2
,
3
,
4
,
5
}
set2
=
{
1
,
2
,
3
}
print
(set1<
=
set2)
print
(set1.issubset(set2))
|
三、练习
一.关系运算
有如下两个集合,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)
|