python 集合详细介绍

本文部分内容源自北京理工大学的国家精品课程《pythonc程序语言设计》笔记,课程地址:https://www.icourse163.org/learn/BIT-268001#/learn/announce

组合数据类型:
1、集合
2、序列 序列包括:元组和列表
3、字典

集合: 多个元素的无序组合,与数学中的集合概念一致。集合元素之间无序,每个元素唯一,不存在相同元素。集合元素不可以更改,不能是可变数据类型,即是不可变数据类型,也就是说一旦一个元素被放入集合中,就不可以被修改。

–集合用大括号{}表示,元素间用逗号分隔
–建立集合类型用{}或set{}
–建立空集合类型,必须用set(),因为{}是默认来生成字典类型的

>>> A={"python",123,("python",123)} #使用{}建立集合
>>> A
{'python', 123, ('python', 123)}

>>> B=set("pypy123") #使用set()建立集合
>>> B
{'3', '1', '2', 'y', 'p'}

注意: 利用set()建立集合后,相同的元素会被去掉,并且也不会按原顺序保留,因为集合中的元素之间没有顺序。

>>> C={"python",123,"python",123}
>>> C
{'python', 123}

我们直接定义一个存在相同元素的方式构造的集合,但是由于集合中不能够包含相同元素,所以通过这种方式生成的集合其实只包含python和123两个元素。

集合间的运算包括四种:并、差、交、补

1、S|T 返回一个新集合,包括在集合S和T中的所有元素,即并操作。
2、S-T 返回一个新集合,包括在集合S但不在T中的元素,即差操作。
3、S&T 返回一个新集合,包括同时在集合S和T中的元素,即与操作。
4、S^T 返回一个新集合,包括集合S和T中非相同的元素,即差操作。

>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S|T
{'python', 456, 'ABC', 123}
>>> S-T
{123}
>>> S&T
{'ABC', 'python'}
>>> S^T
{456, 123}

S<=T或S<T 返回Ture/False,判断S和T的子集关系。

S>=T或S>T 返回Ture/False,判断S和T的包含关系。

>>> S={"a","b","c"}
>>> T={"a","b"}
>>> S<T
False
>>> S>=T
True

此外,python还提高了增强了操作符,即通过四种操作符与赋值符号,也就是等号的组合,来实现对集合S的更新
增强操作符。
1、S|=T S和T并运算后的结果来更新集合S中的元素。

>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S|=T
>>> S
{'python', 456, 'ABC', 123}

2、S-=T  S和T差运算后的结果来更新集合S中的元素

>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S-=T
>>> S
{123}

3、S&=T S和T与运算后的结果来更新集合S中的元素

>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S&=T
>>> S
{'ABC', 'python'}

4、S^=T S和T差运算后的结果来更新集合S中的元素

>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S^=T
>>> S
{123, 456}

集合处理方法:
1、S.add(x) 如果x不在集合S中,将x增加到S中

>>> S={"a","b","c"}
>>> S.add("d")
>>> S
{'c', 'b', 'a', 'd'}

2、S.discard(x) 移除S中元素x,如果x不在集合S中,不报错

>>> S={"a","b","c"}
>>> S.discard("a")
>>> S
{'b', 'c'}

3、S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常。

>>> S={"a","b","c"}
>>> S.remove("b")
>>> S
{'a', 'c'}
>>> S.remove("f")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'f'

4、S.clear() 移除S中的所有元素
5、S.pop() 随机返回S中的一个元素,更新S(同时删除这个元素),若S为空产生KeyError异常

>>> S={"a","b","c"}
>>> S.pop()
'b'
>>> S
{'a', 'c'}

6、S.copy() 返回集合S的一个副本

>>> S={"a","b","c"}
>>> S.copy()
{'b', 'a', 'c'}

7、len(S) 返回集合S的元素个数

>>> S={"a","b","c"}
>>> len(S)
3

8、x in S 判断S中元素x,x在集合S中,返回Ture,否则返回False

>>> S={"a","b","c"}
>>> "d" in S
False
>>> "a" in S
True

9、set(x) 将其它类型变量x转变为集合类型

>>> A=["1","2","3"]
>>> type(A)
<class 'list'>
>>> B=set(A)
>>> type(B)
<class 'set'>

切记:集合中的元素是无序的

>>> S = {"hello","world",123}
>>> for s in S:
...     print(s,end=" ")
...
123 world hello

集合类型应用场景:
1、包含关系比较

>>> "hello" in {"hello","world",123}
True
>>> {"hello","world"}>={"hello","world",123}
False
>>> {"hello","world"}<{"hello","world",123}
True

2、数据去重:集合类型所有元素无重复

>>> A=["hello","hello","world","world",123]
>>> B=set(A) #利用了集合无重复元素的特点,那么B中已经去掉了重复元素
>>> C=list(B) #再将其转换为列表类型
>>> C
[123, 'world', 'hello']

在这里插入图片描述
以上内容,如有错误,尽请批评指正!谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值