python之集合set

一.集合的特点

  1. 天生去重(去掉重复值)
  2. 可以增,删(准确来说,集合可以增加删除元素,但不能修改元素的值)
  3. 可以方便的求交集,并集,补集

二.集合的定义

集合和字典相同,使用大括号{}来定义,但是只存储key,可以将set理解为只存储key的字典;集合是无序的,输出的元素顺序不定

# 集合的定义

set1 = {"xiaoming", 12, 12, "man", (1, )}

print(set1)
print(len(set1))
print(type(set1))

结果如下
{(1,), 12, 'xiaoming', 'man'}
4
<class 'set'>

三.集合元素的添加和删除

set2 = {1, 2, 3, 4, 5, 6}
# 添加集合元素
set2.add(7)             # 添加一个元素7
print(set2)
set2.update([9, 10])    # 一次添加多个元素
set2.update((11, 12))   # 一次添加多个元素
print(set2)

# 删除集合元素
set2.remove(9)          # 删除元素9
set2.discard(10)        # 删除元素10
print(set2)

输出结果如下
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12}
{1, 2, 3, 4, 5, 6, 7, 11, 12}

四.集合的运算

# 集合的交集(相同的元素)
set1 = {"xiaoming", 12, 12, "man", (1, )}
set2 = {1, 2, 3, 4, 5, 6}
set3 = {2, 4, 6, 8}
print(set2.intersection(set3))  # 打印set2和set3的交集
print(set2 & set3)              # &符号也是求交集
print(set2.isdisjoint(set3))    # 判断set2和set3是否有交集,有交集返回False;没有返回True
print(set1.isdisjoint(set2))    # 判断set1和set2是否有交集,True

输出结果如下
{2, 4, 6}
{2, 4, 6}
False
True
set2 = {1, 2, 3, 4, 5, 6}
set3 = {2, 4, 6, 8}

# 集合的并集(合并)
print(set2.union(set3))         # 打印结合set2和set3的并集
print(set2 | set3)              # |符号也可以求并集

输出结果如下
{1, 2, 3, 4, 5, 6, 8}
{1, 2, 3, 4, 5, 6, 8}
set2 = {1, 2, 3, 4, 5, 6}
set3 = {2, 4, 6, 8}

# 集合的补集
print(set2.difference(set3))        # 打印set3集合有,set2集合没有的元素
print(set2 - set3)                  # set3-set2 也可以求补集
print(set3.difference(set2))        # 打印set3集合有,set2集合没有的元素
print(set3 - set2)                  # set3-set2 也可以求补集

输出结果如下
{1, 3, 5}
{1, 3, 5}
{8}
{8}
set2 = {1, 2, 3, 4, 5, 6}
set3 = {2, 4, 6, 8}

# 对称差集
print(set2.symmetric_difference(set3))  # set2有的set3没有的元素 加上 set2没有set3有的元素
print(set2 ^ set3)                      # ^符号也可以求对称差集

# 判断一个集合是否是另一个集合的子集
print(set2.issubset(set3))      # set2是否是集合set3的子集
print(set2.issuperset(set3))    # set2是否包含set3

输出结果如下
{1, 3, 5, 8}
{1, 3, 5, 8}
False
False

 

posted @ 2019-04-30 11:05  sxlong_work  阅读(422)  评论(0编辑  收藏  举报