Python基础知识之集合
- 一 概念及其创建方式
- 概念:
- 创建方式:
- 二 增删改操作
- 增
- 删
- 三 集合之间的判断及其关系
- 判断:
- 关系
- 四 集合的无序性
一 概念及其创建方式
概念:
集合也是Python中的一种内置数据结构,和字典,列表一样(可进行 增删改 操作)
集合是没有 value 的字典
创建方式:
第一种 { }:
代码举例:
a = {1,2,3,4,12,32}
其中,参数不能重复,否则只输出一个
集合的元素具有 无序性
第二种 内置函数(set):
a = set(range(6))
print(a)
输出结果为:
{0, 1, 2, 3, 4, 5}
其中 (类型)type: set
列表转换为集合:
a2 = set([1,2,3,4,5,6,7])
print(a2)
输出结果为:
{1,2,3,4,5,6,7}
元组转换为集合:
a3 = set((1,2,3,4,5,6,7))
print(a3)
输出结果为:
{1,2,3,4,5,6,7}
输出字符串型:
a4 = set('python')
print(a4)
输出结果为:
{‘p’, ‘y’, ‘o’, ‘h’, ‘n’, ‘t’}
原本就是集合,再次用set()定义:
a5 = set({1,2,3,4,5,6})
print(a5)
输出结果为:
{1,2,3,4,5,6}
空集合的创建(易混)
先来演示正确的空集合的创建:
b = set()
再来演示易混的创建方式:
c = {}
注意:
此创建的为 空字典,而非是 空列表
二 增删改操作
增
add() | update() |
添加一个元素 | 添加至少一个元素 |
add() 代码演示:
s={1,2,3,4}
s.add(31)
print(s)
输出结果为:
{1,2,3,4,31}
update() 代码演示:
e = {1,2,3}
e.update(122,144,133)
print(e)
输出结果为:
{1,2,3,144,133,122}
添加列表:
e = {1,2,3}
e.update([15,13,11])
print(e)
输出结果为:
{1,2,3,15,13,11}
添加元组:
e = {1,2,3}
e.update((133,1411))
print(e)
输出结果为:
{1,2,3,133,1411}
删
函数 | 含义 |
remove() | 删除一个指定元素(元素不存在则报错) |
pop() | 随机删除一个元素 |
clear() | 清除集合 |
discard() | 删除一个指定元素(元素不存在不会报错) |
三 集合之间的判断及其关系
判断:
简单概述一下集合之间的判断:
in | not in |
判断该元素是否在其集合 | 判断该元素是否不在其集合 |
和其英语含义一样,在 或者 不在
其判断结果也为布尔值(False True)
关系
集合集合,就如同数学中我们所学习的那个集合,也有其 子集,交集 等这些名词,那么Python中的这些关系该如何表达呢?
接下来我们将以代码举例来解释:
判断两个集合是否相等( == 和!=)
同样,结果为布尔值
q1 = {1,2,3,45}
q2 = {1,2,3,66}
print(q1 == q2)
print('-----------------------')
print(q1 != q2)
输出结果为:
False
-----------------------
True
判断一个集合是否为另一个集合的子集
s1 = {1,7,8,2}
s2 = {1,2,8,7,9,0}
print(s1.issubset(s2))
判断 s1 是否为 s2 的子集
输出结果为:
True
判断一个集合是否为另一个结合的超集
超集:假如 a 为 b 的子集,则 b 就是 a 的超集
s1 = {1,7,8,2}
s2 = {1,2,8,7,9,0}
print(s1.issuperset(s2))
判断 s1 是否为 s2 的超集
输出结果为:
Flase
判断两个集合是否存在交集
w = {1,2,3,7,6}
s = {1,4,5,9}
print(w.isdisjoint(s))
输出结果为:
Flase
原因:
因为isdisjoint中存在dis,所以这个思路是相反的,该函数是判断是否存在交集,若存在,则输出Flase
求两个集合之间的交集
s = {1,3,5,7,4}
s2 = {1,5,8,9,11}
print(s.intersection(s2))
输出结果为:
{1,5}
求两个集合之间的并集
a = {1,2,3}
b = {4,5,6}
print(a.union(b))
输出结果为:
{1,2,3,4,5,6}
求两个集合之间差集
c = {1,2,3,4,5}
d = {1,2,3,7,8}
print(c.difference(d))
输出结果为:
{4,5}
解释:
difference() 含义为 c 的集合减去二者之间的交集
求两个集合之间的对称差集
s2 = {12,13,14,15}
s3 = {12,14,111,222}
print(s2.symmetric_difference(s3))
输出结果为:
{13, 111, 15, 222}
解释:
对称差集 就是a和b的并集减去交集
其中 集合之间的运算是可以用运算符来表示的
函数 | 运算符 |
交集(intersection) | & |
并集(union) | 丨 |
差集(difference) | - |
对称差集(symmetric_difference) | ^ |
左右两边可以为字典,列表等 | 左右两边必须为集合 |
以交集举例:
s1={1,2,3,4,5,10}
s2={1,2,3,5,4,60,70}
print(s1.intersection(s2))
print(s1 & s2)
输出结果均为:
{1,2,3,4,5}
四 集合的无序性
列表 | 集合 |
有序性 | 无序性 |
代码举例:
列表
lst=[ i for i in range(10)]
print(lst)
输出结果为:
[0,1,2,3,4,5,6,7,8,9]
集合
a={i*i for i in range(10)}
print(a)
输出结果为:
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
可以证实,集合是无序的
新手小白,有何不妥,请您提出,还需努力!!!
👍+✏️+⭐️ 是对博主最大的鼓励与支持!!!