Python:基础数据类型--集合

基础数据类型--集合

集合是一组无序数据组合,集合的元素是唯一的。一个{ }里面放一些元素就构成了一个集合,set里面可以是多种数据类型(但不能是列表,集合,字典,可以是元组)。

s={"oldboy","alex","jinxin"}
print(s,type(s))

{'jinxin', 'alex', 'oldboy'} <class 'set'>

主要的作用为:

  1. 去重:把一个列表变成集合,就自动去重。
  2. 关系测试:测试两组数据之前的交集、差集、并集、对称差集等关系。

集合:增

s={"oldboy","alex","jinxin"}
print(s,type(s))

s.add("laowan")         #add()向集合中添加一个元素
print(s)

 {'oldboy', 'jinxin', 'alex'} <class 'set'>
 {'oldboy', 'jinxin', 'laowan', 'alex'}

s={"oldboy","alex","jinxin"}
s.update(["bobo","gugu","xiaoxiao"])  #update()向集合中添加多个元素
print(s)

{'jinxin', 'gugu', 'alex', 'oldboy', 'xiaoxiao', 'bobo'}

集合:删

pop()  随机删除集合中的一个元素,并返回删除的元素,并返回被删除的元素。

s={"oldboy","alex","jinxin"}
result = s.pop()
print(s)
print(result)

{'oldboy', 'jinxin'}
alex

remove()  删除集合中指定的元素  删除不存在的元素会报错。

s={"oldboy","alex","jinxin"}
s.remove('zy')
print(boys)

KeyError: 'zy'

discard()  删除集合中指定的元素  删除不存在的元素不报错。

s={"oldboy","alex","jinxin"}
s.discard('zy1')
print(s)

{'jinxin', 'oldboy', 'alex'}

clear()  清空集合。

s={"oldboy","alex","jinxin"}
s.clear()
print(s)

set()

集合:关系测试

交集:

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 交集 & intersection
print(set1 & set2)
print(set1.intersection(set2))

{4, 5}
{4, 5}

并集:

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
#并集 | union
print(set1 | set2)
print(set1.union(set2))

{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}

差集:不同的位置,等到的结果不同

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 差集 - difference
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)

{1, 2, 3}
{1, 2, 3}
{8, 6, 7}

对称差集: 

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}

子集:

set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2)
print(set1.issubset(set2))

True
True

超集:超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集。

set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set2 > set1)
print(set2.issuperset(set1))

True
True

不可变集合:

set1 = {1, 2, 3}
set1 = frozenset(set1)
print(set1,type(set1))

frozenset({1, 2, 3}) <class 'frozenset'>
原文地址:https://www.cnblogs.com/bailo/p/9070251.html