Python:集合操作总结

集合是一组无序排列不重复元素集

[注]:集合的最大作用是对一个序列进行去重操作

一、集合的分类

  在Python中集合分为两类,为可变集合(set)和不可变集合(frozenset)。对于可变集合(set)是允许添加和删除元素的;而对于不可变集合(frozenset)则不允许对集合进行添加和删除操作。

二、集合的创建

  与列表([])、元组(())和字典({})不同,集合的创建没有特别的语法格式,因此如果想要创建集合就必须调用创建集合所需的工厂函数:set()和frozenset()  [注]:这是创建集合的唯一方法

1 s=set('Tomwenxing') #创建可变的集合
2 t=frozenset('Tomwenxing') #创建不可变的集合
3 new_s=set([1,2,3,4,5,6]) #列表转化为可变集合
4 new_t=frozenset([1,2,3,4,5,6]) #列表转化为不可变集合
5 
6 print(s)
7 print(t)
8 print(new_s)
9 print(new_t)

 

三、集合操作符

[说明]:

(1)B-A:读作“A在B中的差集或相对补集”,意为“只属于B但不属于A的元素组成的集合

(2)AΔB:读作“A和B的对称差分或对称差集”,意为“集合A与集合B中所有不属于A∩B的元素的集合

 

四、集合的方法

A、适用于所有集合的方法

1.s.issubset(t):如果s是t的子集,返回True,否则返回False

1 name=set('Tomwenxing')
2 sub_name=set('Tom')
3 print(sub_name.issubset(name))

2.s.issuperset(t):如果s是t的超集,返回True,否则返回False

1 name=set('Tomwenxing')
2 sub_name=set('Tom')
3 print(name.issuperset(sub_name))

 3.s.union(t):返回一个新的集合,该集合是s和t的并集

[注]:s.union(t)相当于“s|t”

1 name1=set('Tom')
2 name2=set('Jack')
3 print(name1.union(name2))#并集操作
4 print(name1|name2)#并集操作

 4.s.intersection(t):返回一个新的集合,该集合是s和t的交集

[注]:s.intersection(t)相当于“s&t”

1 name1=set('Tomwenxing')
2 name2=set('Tomhandking')
3 print(name1.intersection(name2))
4 print(name1&name2)

5.s.difference(t):返回一个新的集合,该集合是s和t的差集,即该集合中的元素是s的成员但不是t的成员

[注]:s.difference(t)相当于“s-t”

1 name1=set('Tomwenxing')
2 name2=set('Tom')
3 print(name1.difference(name2))
4 print(name1-name2)

6.s.symmetric_deference(t):返回一个新的集合,该集合是s和t的对称差集,即返回所有s和t独有的(非共同拥有的)元素集合

[注]:s.symmetric_deference(t)相当于“s^t”

1 name1=set('Tomwenxing')
2 name2=set('Tomhandking')
3 print(name1.symmetric_difference(name2))
4 print(name1^name2)

7.s.copy():返回一个集合s的浅拷贝,效率比工厂函数要好

B、仅适用于可变集合(set)的方法

1.s.update(t):用集合t来更新集合s,更新后集合s在原有元素的基础上增加原先集合t所独有的元素

1 number1=set('1234567')
2 number2=set('56789')
3 number1.update(number2)
4 print(number1)

2.s.intersection_update(t):将集合s更新为集合s与集合t的交集

1 number1=set('1234567')
2 number2=set('56789')
3 number1.intersection_update(number2)
4 print(number1)

3.s.difference_update(t):将集合s更新为集合s与集合t的差集

1 number1=set('1234567')
2 number2=set('56789')
3 number1.difference_update(number2)
4 print(number1)

4.s.symmetric_difference_update(t):将集合s更新为集合s与集合t的对称差集

1 number1=set('1234567')
2 number2=set('56789')
3 number1.symmetric_difference_update(number2)
4 print(number1)

5.s.add(obj):在集合s中添加对象obj

1 number1=set('1234567')
2 number1.add('Tomwenxing') #作为一个整体添加到集合中
3 print(number1)

6.s.remove(obj):从集合s中删除对象obj,如果obj不是集合s中的元素,将引发keyerror

1 language=set(['C','Python','C++','Java'])
2 language.remove('Java')
3 print(language)

7.s.discard(obj):如果obj是集合s中的元素,就从集合s中删除对象obj

1 language=set(['C','Python','C++','Java'])
2 language.discard('Java')
3 print(language)

8.s.pop():删除集合s中的任意一个对象,并返回它

1 language=set(['C','Python','C++','Java'])
2 element=language.pop()
3 print(element)
4 print(language)

9.s.clear():删除集合s中的所有元素

转载于:https://www.cnblogs.com/duwenxing/p/7355325.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值