python中集合是什么数据类型_Python3---数据类型---集合

前言

该文章描述了Python数据类型当中集合的概念

2020-01-17

天象独行

集合也是属于python语言当中的一种数据类型,特点是:有的可变,有的不可变,元素无次序,不可重复。如果说元组(tuple)算是列表(list)和字符串(str)的杂合,那么集合(set)则可以堪称是list和dict的杂合。集合拥有类似字典的特点:可以用{}花括号来定义;其中的元素没有序列,也就是非序列类型的数据;而且集合中的元素不可重复,这就类似于dict键。集合也有一点列表的特点:有一种集合可以在原处修改。

0X01;创建集合

1;set()方法创建

注意:set()创立的集合都是可原地修改的集合,或者说是可变的,也可以说是unhashabl

>>> x = set('aaron')>>>x

{'n', 'o', 'a', 'r'}>>>

2;通过{}创建

注释:通过{}无法创建含有列表或者字典类型对象元素的集合。

>>> y = {'w','asdfads','owenoeo'}>>>y

{'owenoeo', 'w', 'asdfads'}>>>

3;通过frozenset()创建

注释:这种集合的创建方法是用frozenset()不能原地修改

>>> a = frozenset("asdfgh")>>>a

frozenset(['a', 'd', 'g', 'f', 'h', 's'])>>>

0X02;集合函数

我们都知道“万物皆对象”,这里面当然也是包括集合的,那么集合有没有继承一些对象的方法呢?这些方法怎么使用呢?正常我们通过dir()方法来查看对象包含了哪些方法,help查看如何使用方法。

1;查看集合包含方法

>>> x = set('aaron')>>>x

{'n', 'o', 'a', 'r'}>>> y = {'w','asdfads','owenoeo'}>>>y

{'owenoeo', 'w', 'asdfads'}>>>dir(x)

['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

2;查看方法作用

>>> help(x.update)

Help on built-infunction update:

update(...) method of builtins.set instance

Update a set with the union of itselfand others.

0X03;集合运算

1;元素与集合的关系

元素与集合就一种关系,要么属于某个集合,要么不属于。

>>> b = frozenset("sdfgf")>>>b

frozenset({'d', 'f', 's', 'g'})>>> "d" inb

True>>> "u" inb

False>>>

2;集合与集合的关系

假设两个集合A、B

2.1;A是否等于B,即两个集合的元素是否完全一样。

>>> x = set("qwer")>>> y = set("qwer")>>>x

{'w', 'q', 'r', 'e'}>>>y

{'w', 'q', 'r', 'e'}>>> x ==y

True>>> x !=y

False>>>

2.2;A是否是B的子集,或者反过来,B是否是A的超集,即A的元素是否也都是B的元素,且B的元素比A的元素数量多。判断集合A是否是集合B的子集,可以使用A

>>> a = set("qazwsxedc")>>> b = set("qazwsx")>>>a

{'x', 'c', 'z', 'd', 'w', 'q', 'a', 's', 'e'}>>>b

{'x', 'z', 'w', 'q', 'a', 's'}>>> a

False>>> a >b

True>>>

2.3;A、B的并集,即A、B所有元素。可以使用的符号是“|”,是一个半角状态下的竖线,输入方法是在英文状态下,按下“shift”加上右方括号右边的那个键。表达式是A|B也可使用函数A.union(B),得到的结果就是两个集合并集,注意,这个结果是新生成的一个对象,不是将结合A扩充

>>> a = set("qazwsxedc")>>> b = set("pl,okmijn")>>> c = a |b>>>c

{'l', 'k', 'x', 'c', 'j', 'z', 'i', 'd', ',', 'p', 'o', 'n', 'w', 'q', 'a', 's', 'm', 'e'}>>>

2.4;A、B的交集,即A、B所公有的元素,使用“&”来操作

>>> a = set("qazwsxedc")>>> b = set("edcrfvtgb")>>> c = a &b>>>c

{'d', 'c', 'e'}>>>

2.5;)A相对B的差(补),即A相对B不同的部分元素。使用“-”来操作

>>> a = set("qazwsxedc")>>> b = set("edcrfvtgb")>>> c = a -b>>>c

{'x', 's', 'z', 'q', 'a', 'w'}>>>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值