六、Python基本数据类型六:集合类型

·集合(set)是一个无序的不重复元素序列

·有可变集合和不可变集合两种类型

1、集合的创建

·使用大括号{ }

·使用set()函数

·创建空集合时必须用set()而不是{ },因为{ }是用来创建一个空字典

·可变集合使用set函数,不可变集合使用frozenset函数

set_a = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
set_b = set('abracadabra')
print(set_a, '\n', set_b)
#{'orange', 'banana', 'pear', 'apple'} 
#{'b', 'r', 'a', 'd', 'c'}
set_a = set('this')
set_b = set(['java', 'python', 'C++', 'PHP'])
set_c = frozenset(['java', 'python', 'C++', 'PHP'])
print(set_a, '\n', set_b, '\n', set_c)
'''
输出结果:
{'t', 'h', 's', 'i'} {'python', 'PHP', 'java', 'C++'} frozenset({'python', 'PHP', 'java', 'C++'}) '''

2、集合的基本操作

(1)访问集合元素:使用成员操作符in或not in来判断某元素是否在集合中

set_a = set('this')
'i' in set_a
#True

(2)添加元素

·s.add(x)方法:将元素x添加到集合s中,如果元素已存在则不进行任何操作

set_a = set(['java', 'python', 'C++', 'PHP'])
set_a.add('html')
set_a
#{'python', 'PHP', 'java', 'C++', 'html'}

·s.update(x)方法:x可以是列表,元组,字典等

set_a = set('this')
set_a.update([' ', 'H', 'i', 'P'])
set_a
#{'H', 's', 'i', 't', 'h', ' ', 'P'}

(3)删除元素

·s.remove(x)方法:将元素x从集合s中移除,如果元素不存在,则会发生错误

set_a = set(['java', 'python', 'C++', 'PHP'])
set_a.remove('PHP')
set_a
#{'python', 'java', 'C++'}

·s.discard(x)方法:将元素x从集合s中移除,如果元素不存在,不会发生错误

set_a = set(['java', 'python', 'C++', 'PHP'])
set_a.discard('C++')
set_a
#{'python', 'PHP', 'java'}

·s.pop()方法:随机删除

set_a = set(['java', 'python', 'C++', 'PHP'])
set_a.pop()
#'python'
set_a
#{'PHP', 'java', 'C++'}

(4)清空集合元素

·s.clear()方法

set_a = set('this')
set_a.clear()
set_a
#set()

(5)计算集合元素个数

set_a = set(['java', 'python', 'C++', 'PHP'])
len(set_a)
#4

3、集合运算

·isdisjoint()方法:判断是否有交集,有为False,无为True

x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "facebook"}
x.isdisjoint(y)
#True
y = {"google", "apple", "facebook"}
x.isdisjoint(y)
#False
y.isdisjoint(x)
#False

运算

运算符

新集合方法

更新原集合方法

a | b

union

update

a & b

intersection

intersection_update

a - b

difference

difference_update

对称差

a ^ b

symmetric_difference

symmetric_difference_update

4、集合的常用方法

方法

描述

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

posted @ 2020-07-31 16:43  爱喝奶茶的CC怪  阅读(313)  评论(0)    收藏  举报