您的位置:首页 > 编程语言 > Python开发

Python学习之路——集合(set)

2020-01-15 05:43 148 查看

集合是Python里一个无序的不重复元素序列。

一、创建集合

集合和列表基本一致,但是集合具有以下几个特点:
1.集合只能存储不可变对象
2.集合中存储的对象是无序的
3.集合中不能出现重复的元素

# 方式一
set1 = {'set'}
# 方式二
set2 = set() # 创建一个空字典
# set()函数中可以传递一个可迭代对象
set3 = set('set') # ser3 = {'s', 'e', 't'}

二、访问集合的值

1. 通过索引访问

集合作为一种无序的序列,是不能够通过索引直接访问的,要想通过索引访问,只能先将它转化为其他有序序列,如元组和列表。并且由于集合是无序的,通过索引访问的时候也并非是按照存入的顺序。

set1 = {'P', 'y', 't', 'h', 'o', 'n'}
print(list(set1)[0])
print(tuple(set1)[0])

2. 遍历集合

集合作为一种无序的序列,虽然不能通过索引访问,但是作为一种序列,依然可以使用for语句进行遍历。注意:遍历结果也是无序的。

set1 = {'P', 'y', 't', 'h', 'o', 'n'}
for i in set1:
print(i)

三、集合的特殊操作

1. 判断元素是否在集合内部

set1 = {'P', 'y', 't', 'h', 'o', 'n'}
'P' in set1 # True
'P' not in set1 # False

2. 集合的运算

假设有集合A和集合B:

(1) 交集

找集合A和和集合B中共有的元素就是求A和B的交集。

set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
set3 = set1 & set2 # set3 = {3, 4, 5}

(2) 并集

找集合A和和集合B中所有的元素就是求A和B的交集。

set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
set3 = set1 & set2 # set3 = {1, 2, 3, 4, 5, 6, 7}

(3) 差集

所有属于A且不属于B的元素的集合被称为A与B的差集。

set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
set3 = set1 - set2 # set3 = {1, 2}

(4) 异或集

集合A和集合B中除去相同元素后剩下的元素的集合叫做A和B的异或集。

set1 = {1,2,3,4,5}
set2 = {3,4,5,6,7}
set3 = set1 ^ set2 # set3 = {{1, 2, 6, 7}

(5) 子集与真子集

如果集合A中包含有集合B的所有元素且含有集合B没有的元素,那么集合B就是集合A的真子集。如果集合A和集合B中元素相同,就是子集。空集是任意非空集合的真子集。

set1 = {3,4,5}
set2 = {3,4,5,6,7}
set1 < set2 # True
set1 <= set2 # True

(6) 超集与真超集

集合A中的每一个元素都在集合B中,且集合A中可能包含B中没有的元素,则集合A就是B的一个超集,反过来,B是A的子集。 A是B的超集,若A中一定有B中没有的元素,则A是B的真超集,反过来B是A的真子集。

set1 = {3,4,5}
set2 = {3,4,5,6,7}
set2 > set1 # True
set2 >= set1 # True

四、集合常用函数

1. 求取集合中元素个数

set1 = {1,2,3,4,5}
# len()函数可以用来求取集合中元素个数
len(set1) # 5
# 魔术方法 面向对象
set1.__len__() # 5

2. 删除集合

set1 = {1,2,3,4,5}
# del()函数可以删除整个集合并回收地址
del set1
# 因为set1已经被回收了,所以调用时会报错
print(set1) # NameError: name 'set1' is not defined

五、集合常用方法

1. 添加元素(add)

set1 = {1,2,3,4,5}
# add()方法可以向集合中添加元素
set1.add(6) # set1 = {1,2,3,4,5,6}

2. 清空集合(clear)

set1 = {1,2,3,4,5}
# clear()方法可以清空集合
set1.clear() # set1 = {}

3. 随机删除集合中的元素(pop)

set1 = {1,2,3,4,5}
# pop()方法会随机删除集合中一个元素并返回删除的元素
set1.pop()

4. 删除集合中的指定元素(remove)

set1 = {1,2,3,4,5}
# remove()方法会删除集合指定元素
set1.remove(5) # set1 = {1,2,3,4}
# 当删除元素不在集合中时会抛出异常
set1.remove(6) # KeyError: 6
  • 点赞
  • 收藏
  • 分享
  • 文章举报
相思始觉海非深 发布了29 篇原创文章 · 获赞 15 · 访问量 1941 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: