python3中集合(set)类型方法

在python中,使用大括号然后直接填充元素就能创建集合类型。

s1 = {}
s2 = {1, 2, 3, 4, 5}
print(type(s1))
print(type(s2))

输出结果为:

# 直接声明没有数据是字典类型
<class 'dict'>
# 添加了元素就变为集合类型
<class 'set'>

集合中有几个方法,具体的应用如下:

add

add方法就是给集合中添加元素

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

输出结果为:

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

clear

清空集合中的元素

s1 = {1, 2, 3, 4, 5}
s1.clear()
print(s1)

输出结果为:

set()

copy

复制一个集合出来

s1 = {1, 2, 3, 4, 5}
s2 = s1.copy()
print(s1)
print(s2)

输出结果为:

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

difference

求差集,不改变原数据。可以使用"-"实现相同功能。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.difference(s2))
print(s2.difference(s1))
print(s1)
print(s2)
print(s1 - s2)
print(s2 - s1)

输出结果为:

{1, 2}
{6, 7}
# 并没有改变原数据
{1, 2, 3, 4, 5}
{3, 4, 5, 6, 7}
# 使用"-"实现了相同功能
{1, 2}
{6, 7}

difference_update

求差集,改变原数据。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s1.difference_update(s2)
print(s1)
print(s2)

输出结果为:

# s1已经发生了改变
{1, 2}
{3, 4, 5, 6, 7}

discard

删除元素,如果元素不存在,则不进行任何处理,不报错。

s1 = {1, 2, 3, 4, 5}
s1.discard(3)
print(s1)
s1.discard(3)
print(s1)

输出结果为:

{1, 2, 4, 5}
{1, 2, 4, 5}

intersection

交集,不改变原数据。可以使用"&"实现相同的功能。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.intersection(s2))
print(s1 & s2)
print(s1)
print(s2)

输出结果为:

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

intersection_update

求交集,改变原数据。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.intersection_update(s2))
print(s1)
print(s2)

输出结果为:

None
{3, 4, 5}
{3, 4, 5, 6, 7}

isdisjoint

是否含有相同的数据,如果含有为False,否则为True。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {8, 9, 0}
print(s1.isdisjoint(s2))
print(s1.isdisjoint(s3))

输出结果为:

False
True

issubset

是否是子集,如果是为True,否则为False。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.issubset(s1))
print(s3.issubset(s2))

输出结果为:

True
False

issuperset

是否是父集,如果是为True,否则为False。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s1.issuperset(s2))
print(s1.issuperset(s3))

输出结果为:

False
True

pop

随机删除元素,如果集合为空,则报错。

s1 = {1, 4}
print(s1.pop())
print(s1.pop())
print(s1.pop())

输出结果为:

1
4
Traceback (most recent call last):
  File "C:/U/set_test.py", line 14, in <module>
    print(s1.pop())
KeyError: 'pop from an empty set'

remove

删除元素,如果删除元素不存在,则报错。

s1 = {1, 4}
print(s1.remove(1))
print(s1)
print(s1.remove(0))
print(s1)

输出结果为:

None
{4}
Traceback (most recent call last):
  File "C:/U/set_test.py", line 14, in <module>
    print(s1.remove(0))
KeyError: 0

symmetric_difference

获得相同元素以外的元素的集合,原数据不改变。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.symmetric_difference(s1))
print(s3.symmetric_difference(s2))

输出结果为:

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

symmetric_difference_update

获得相同元素以外的元素的集合,改变原数据。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
s3 = {1, 4, 5}
print(s3.symmetric_difference_update(s1))
print(s3)
print(s3.symmetric_difference_update(s2))
print(s3)

输出结果为:

None
{2, 3}
None
{2, 4, 5, 6, 7}

union

并集,原数据不改变。可以使用"|"完成相同的功能

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.union(s2))
print(s1 | s2)
print(s1)
print(s2)

输出结果为:

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

update

并集,原数据改变。

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1.update(s2))
print(s1)
print(s2)

输出结果为:

None
{1, 2, 3, 4, 5, 6, 7}
{3, 4, 5, 6, 7}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容