天天看点

Python入门之集合(set)详解1 集合的创建2 集合的特性3 集合的常用方法

1 集合的创建

1.1 集合的创建:集合里面的元素是不可重复的

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

结果:
{1, 2, 3, 4, 5}
<class 'set'>
           

1.2 创建集合时可以以{ }和set( )来创建

>>> s = {2,3,4,4,5}
>>> type(s)
<class 'set'>
>>> s = set([1,2,3,4])
>>> s
{1, 2, 3, 4}
>>> type(s)
<class 'set'>
           

1.3 空集合创建时必须使用set([ ])创建,用{ }创建出来的为一个空字典

>>> s = {}
>>> type(s)
<class 'dict'>
>>> s = set([])
>>> type(s)
<class 'set'>
           

1.4 利用集合中元素的不可重复性可以对列表进行去重

li = [1,2,3,1,2,3,2,4,3,4,5,2]
print(list(set(li)))  ##将列表转化成集合去重,再将集合转成列表输出
[1, 2, 3, 4, 5]
           

2 集合的特性

集合支持的操作只有成员操作符

"""
集合只支持成员操作符 for循环
"""
s = {1,2,3}
# print(s[0])
# print(s * 3)
# print(s + {4,5,6})
print(1 in s)

for i in s:
    print(i)

for i,v in enumerate(s):
    print('index: %s,value: %s' %(i,v))

执行结果:
True
1
2
3
index: 0,value: 1
index: 1,value: 2
index: 2,value: 3
           

3 集合的常用方法

3.1 添加一个元素:add 添加元素和在集合中的存储顺序不同

s = {6,7,8,9}
s.add(1)
print(s)

结果:
{1, 6, 7, 8, 9}
           

3.2 添加多个元素:update

s = {6,7,8,9}
s.update({2,3,5})
print(s)

结果:
{2, 3, 5, 6, 7, 8, 9}
           

3.3 删除.pop() 多次执行,被删除的元素不一定

s = {6,7,8,9}
a = s.pop()
print(s)
print(a)

结果:
{9, 6, 7}
8
           

3.4 删除指定元素,元素必须要存在

s = {6,7,8,9}
s.remove(9)
print(s)

结果:
{8, 6, 7}
           

3.5 并集:union或 |

s1 = {1,2,3}
s2 = {2,3,4}
print('并集:',s1.union(s2))
print('并集:',s1|s2)

结果:
并集: {1, 2, 3, 4}
并集: {1, 2, 3, 4}
           

3.6 交集:intersection或&

s1 = {1,2,3}
s2 = {2,3,4}
print('交集:',s1.intersection(s2))
print('交集:',s1&s2)

结果:
交集: {2, 3}
交集: {2, 3}
           

3.7 差集:difference

s1 = {1,2,3}
s2 = {2,3,4}
print('差集:',s1.difference(s2))
print('差集:',s2.difference(s1))

结果:
差集: {1}
差集: {4}
           

3.8 对等差分(并集-交集)symmetric_difference或^

s1 = {1,2,3}
s2 = {2,3,4}
print('对等差分:',s1.symmetric_difference(s2))
print('对等差分:',s2.symmetric_difference(s1))

结果:
对等差分: {1, 4}
对等差分: {1, 4}
           

3.9 判断超集:issuperset

s3 = {1,2}
s4 = {1,2,3}
#s3是否为s4的超集
#超集:如果s3中的每一个元素都在集合s4中,且s4中可能包含s3中没有的元素
#那么s4就是s3的一个超集
print(s3.issuperset(s4))
print(s4.issuperset(s3))

结果:
False
True
           

3.10 判断子集:issubset

s3 = {1,2}
s4 = {1,2,3}
print(s3.issubset(s4))
print(s4.issubset(s3))

结果:
True
False
           

3.11 判断两个集和是不是不相交:isdisjoint

注:isdisjoint()用来判断两个集合是否包含相同元素,没有返回True,否则返回False

s3 = {1,2}
s4 = {1,2,3}
print(s3.isdisjoint(s4))

结果:
False