首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

集合set是怎样的一种存在?

什么是集合?

集合是存储不重复元素的无序序列。

集合由字典衍生而来,但是集合只存储key,不存储value,且key不能重复。

集合会自动忽略重复的数据。

集合中只能存储不可变数据类型。

创建一个集合

我们可以用花括号{}/set()来创建集合,但是,如果创建空集合,只能用set(),不能用{},因为{}是用来创建空字典的。

>>> aset = set()

>>> aset

set()

>>> bset = {'a','b','c'}

>>> bset

{'b', 'c', 'a'}

可用set()从其他序列转换而来。

>>> cset = set([1,2,'abc'])

>>> cset

>>> dset = set(('Jane','Tim','Tony'))

>>> dset

{'Tim', 'Tony', 'Jane'}

集合的基本操作

集合中元素的个数

len()

>>> aset = {'Python','Java','C++'}

>>> len(aset)

3

(注:aset的元素个数是3个)

判断元素是否在集合中

in

>>> aset = {'Python','Java','C++'}

>>> 'Python' in aset

True

(注:'Python'在集合aset里面)

添加元素

add添加一个数据,必须是不可变数据类型

>>> aset = {'Python','Java','C++'}

>>> aset.add('PHP')

>>> aset

{'Java', 'C++', 'PHP', 'Python'}

update批量添加数据

>>> aset = {'Java', 'C++', 'PHP', 'Python'}

>>> aset.update(('C','Ruby'))

>>> aset

{'Java', 'Python', 'Ruby', 'C', 'PHP', 'C++'}

>>> aset.update(['VB','.NET'])

>>> aset

{'Java', 'Python', 'Ruby', '.NET', 'C', 'PHP', 'C++', 'VB'}

>>> aset.update({'C#','SQL'})

>>> aset

{'Java', 'Python', 'Ruby', '.NET', 'C', 'C#', 'PHP', 'SQL', 'C++', 'VB'}

(注:update可以添加列表,元组,甚至集合)

移除元素

remove当删除一个不存在的元素时,会报错。

>>> aset = {'Python','Java','PHP','C++'}

>>> aset.remove('PHP')

>>> aset

{'Java', 'C++', 'Python'}

>>> aset.remove('Ruby')

Traceback (most recent call last):

File "

", line 1, in

aset.remove('Ruby')

KeyError: 'Ruby'

discard当删除一个不存在的元素时,不会报错。

>>> aset = {'Python','Java','PHP','C++'}

>>> aset.discard('Java')

>>> aset

{'C++', 'PHP', 'Python'}

>>> aset.discard('C')

>>> aset

{'C++', 'PHP', 'Python'}

pop删除任意的数据,并返回该值。

>>> aset = {'Python','Java','PHP','C++'}

>>> aset.pop()

'Java'

>>> aset.pop()

'C++'

>>> aset

{'PHP', 'Python'}

清空集合

clear

>>> aset = {'Python','Java','PHP','C++'}

>>> aset.clear()

>>> aset

set()

集合的运算

并集 a | b

>>> aset = set('abc')

>>> aset

{'b', 'c', 'a'}

>>> bset = set('bcd')

>>> bset

{'b', 'c', 'd'}

>>> aset | bset

{'b', 'c', 'd', 'a'}

交集 a & b

>>> aset & bset

{'b', 'c'}

差集 a - b

>>> aset - bset

{'a'}

(注:把2个集合共有的元素从aset中删除)

对称差 a ^ b

>>> aset ^ bset

{'d', 'a'}

(注:并集减去交集,就是对称差)

真超集,>=超集

==两个集合是否相等,=!不等于

>>> aset

True

(注:aset是set('abcd')的子集)

>>> aset > set('abcd')

False

(注:aset不是set('abcd')的超集)

>>> aset == bset

False

>>> aset != bset

True

以上是集合的一些总结,欢迎大家指正。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181231B0QG9V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券