欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python集合:set

程序员文章站 2022-03-26 12:35:12
集合 集合的描述 set是一个无序不重复的序列,可以用{}或者 set() 函数创建集合,它存放不可变类型(如字符串、数字、元组)数据。 注意:创建一个空集合必须使用set()方法,因为{}是用来生成一个空字典的。 集合的方法 add() 将元素添加到集合中。 s1 = {1,2,3,4,5} s1 ......

集合

集合的描述

set是一个无序不重复的序列,可以用{}或者 set() 函数创建集合,它存放不可变类型(如字符串、数字、元组)数据。

注意:创建一个空集合必须使用set()方法,因为{}是用来生成一个空字典的。

集合的方法

  • add()

将元素添加到集合中。

s1 = {1,2,3,4,5}
s1.add('new_number')
print(s1)

{1, 2, 3, 4, 5, 'new_number'}

  • update()

可一次更新多个值。

# update(x),将x添加到集合中,且参数可以是列表、元组、字典等
s2 = set(('aaa', 'ccc', 'fff'))
# 添加字典只能添加不可变的--键
dict_1 = {'name': 'bb', 'age': 'cc', 'aaa': 11}
s2.update(dict_1)
print("新集合", s2)

新集合 {'name', 'aaa', 'fff', 'ccc', 'age'}

  • remove()

移除集合中的某个元素。

s3 = set(('aaa', 'ccc', 'fff'))
s3.remove('ccc')
print(s3)

{'aaa', 'fff'}

此外还有一个discard()函数也能移除集合中的元素,与remove()不同的是,移除的元素是字典中没有的元素时discard()不会报错。

  • pop()

随机删除集合中的一个元素。

s4 = set(('aaa', 'ccc', 'fff'))
s4.pop()
print(s4)

{'aaa', 'ccc'}

  • clear()

清空集合

  • 计算集合元素个数。

    s5 = set(('aaa', 'ccc', 'fff')) print('集合元素个数为:'+str(len(s5)))

  • copy()

复制一个新的集合。

s6 = s5.copy()
print(s6)

{'aaa', 'ccc', 'fff'}

  • difference()

求差集,也可以用-

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f', 1, 'ww'}
# 两种求差集的方法
print("在s中不在s1中: ", s.difference(s1))
print("在s1中不在s中: ", s1-s)

在s中不在s1中:  {'cc'}
在s1中不在s中:  {'ww', 1}
  • intersection()

求交集,也可以用&

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f', 1, 'ww'}
# 同时在集合s 和 s1 中的元素
print(s.intersection(s1))
print(s1&s)
  • union()

求并集,也可以用|

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f', 1, 'ww'}
# 元素在集合 s 中或在集合 s1 中
print(s.union(s1))
print(s1|s)
  • sysmmetric_difference()

求对称差集,也可以用^

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f', 1, 'ww'}
# 除集合s和集合s1共有的以外的元素
print(s.symmetric_difference(s1))
print(s1^s)
  • issubset()

判断一个集合是否是另一个集合的子集.

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f'}
print(s.issubset(s1))
print(s1.issubset(s))
  • isuperset()

判断一个集合是否是另一个集合的父集.

s = set(('a', 'cc', 'f'))
s1 = {'a', 'f'}
print(s.issuperset(s1))
print(s1.issuperset(s))
# s1是s的子集,s是s1的父集
print(s1.issubset(s))
  • isdisjoint()

检测2个集合是否不存在交集,如果存在交集,则返回false

s1 = {'ljl','wc','xy','zb','lsy'}
s2 = {'mmf','lsy','syj'}
s3 = {1, 2}
print(s1.isdisjoint(s2))
print(s1.isdisjoint(s3))
  • frozenset()

定义不可变集合

s = frozenset('a', 'b')