【菜鸟零基础学习笔记】Day14-集合的定义、基本操作、关系运算、内置方法

【集合】

集合的特点:

1、由不同元素组成

2、无序

3、集合中元素必须是不可变类型(字符串、数字、元组)

如何定义一个集合:

s = {1,2,3}
type(s)   #set

另一种定义方式:

s = set('hello')   #内部放置可迭代类型(set是一个for循环)
print(s)   #{'h', 'l', 'e', 'o'}

集合的内置方法:

 

【s.add()】

s = {1,2,3,4,5,6}
s.add('s')
print(s)   #{1, 2, 3, 4, 5, 6, 's'}
s.add(3)   #{1, 2, 3, 4, 5, 6, 's'}

 

【clear()】

s = {1,2,3,4,5,6}
s.clear()
print(s)   #set()

 

【copy()】

s = {1,2,3,4,5,6}
s1 = s.copy()

 

【pop()】

s = {1,2,3,4,5,6}
s1 = s.pop()   #随机删除

 

【remove()】

s = {1,2,3,4,5,6}
s.remove(2)  #和append一样,直接在原来的set上修改,不用赋值给其他的变量
print(s)

#删除元素不存在的时候会报错

 

【discard()】

s = {1,2,3,4,5,6}
s1 = s.discard(7)   #删除元素不存在时候不会报错

 

【set() 可以用来去重】

name = ['alex','alex','yxy']
s = set(name)
name = list(s)
print(name)   #['yxy', 'alex'] 但是元素的顺序会发生变化

集合的关系运算:

 

【intersection() 交集】

python = ['a','b','c']
linux = ['a','b']
p = set(python)
l = set(linux)
print(p,l)   #{'b', 'c', 'a'} {'b', 'a'}
print(p.intersection(l))   #{'b', 'a'}
print(p&l)   #{'b', 'a'}

 

【union() 并集】

python = ['a','b','c']
linux = ['a','b']
p = set(python)
l = set(linux)
print(p.union(l))   #{'a', 'b', 'c'} 注意:union函数不会覆盖原集合p
print(p|l)   #{'a', 'b', 'c'}

 

【difference() 差集】

python = ['a','b','c']
linux = ['a','b']
p = set(python)
l = set(linux)
print(p.difference(l))   #{'c'}
print(p-l)   #{'c'}

 

【symmetric_difference() 交叉补集:先合在一块(无重复),再减去共同的部分】

python = ['a','b','c']
linux = ['a','b']
p = set(python)
l = set(linux)
print(p.symmetric_difference(l))   #{'c'}
print(p^l)

 

【difference_update()】

用于移除两个集合中都存在的元素

difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

python = ['a','b','c']
linux = ['a','b']
p = set(python)
l = set(linux)
print(p,l)
print(p.difference_update(l))   #输出的是None,因为没有返回值

 

【isjoint() 判断两个集合是否有交集:如果没有交集输出True,如果有交集输出False】

s1 = {1,2}
s2 = {3,5}
print(s1.isdisjoint(s2))  #True

#这个规则好反人类啊。。

 

【issubset() 判断两个集合是否为父子级的关系】

s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2))   #True

 

【update()】

s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)
print(s1)   #{1, 2, 3} 可以更新多个值


#注意:
s1.add(1)  #只能更新一个值

s1.union(s2)  #并集,不更新

用update传元组和列表:

s1 = {1,2,3}
s1.update((3,4))
print(s1)   #{1, 2, 3, 4}

-----------------------------------

s1 = {1,2,3}
s1.update([3,4])
print(s1)   #{1, 2, 3, 4}

上述的集合是可变类型

 

但是,下面这个集合是不可变的:

【frozenset() 没有add、pop等方法】

s = frozenset('hello')
print(s)   #frozenset({'o', 'e', 'h', 'l'})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值