Python__16--集合

时间:2022-12-29 11:07:51

Python__16--集合

1 集合

一句话,没有value的字典,无序可变序列。

1.1 集合的创建

1.1.1 使用{}

s={2,3,4,5,5,6,7,7}
#输出为{2,3,4,5,6,7} 集合中元素不允许重复

1.1.2 使用set()

测试代码:

s={2,3,4,5,5,6,7,7}
print(s)
s=set(range(6))
print(s)
s=set([3,4,5,56])
print(s)
s=set((3,4,5,56))
print(s)
s=set('Python')    #将字符串逐个字符拆开,产生无序集合
print(s)
s=set({1,124,5,4})
print(s)

测试结果:

Python__16--集合

1.2 集合的相关操作

1.2.1 是否存在某元素

s={10,20,30,405,60}
print(10 in s)
print(10 not in s)

1.2.2 加元素

  1. 加一个

    s.add(80)

  2. 至少加一个

    s={10,20,30,405,60}
    s.update({200,400,800})
    s.update([56,57,57])
    s.update((78,74,70))
    #各个元素均添加到随机位置
    

1.2.3 删元素

  1. s.remove(10)

    若不存在,会报错KeyError

  2. s.discard(500)

    若不存在,不会报错

  3. s.pop

    随机删除一个,不能指定参数

  4. s.clear

    清空集合中的元素,输出为空set()

1.3 集合的关系

  1. ==、!=

    #元素相同,就相等
    s={1,2,3,4}
    s1={4,3,2,1}
    s==s1
    
  2. a是否是b的子集

    print(s2.issubset(s1))
    #是子集则True
    
  3. a是否是b的超集(a是否包含b)

    print(s2.issuperset(s1))
    #是超集则True
    
  4. 两个集合是否没交

    #有交集False,没交集True
    print(s2.isdisjoint(s1))
    #有交集False,没交集True
    

1.4 集合的数学操作

  1. 交集

    print(s1.intersection(s2))
    print(s1  &  s2)
    
  2. 并集

    print(s1.union(s2))
    print(s1 | s2)
    
  3. 差集

    s1={1,2,3,4}
    s2={2,3,4,5}
    print(s1.difference(s2))  #或者print(s1-s2)
    #{1}
    
  4. 对称差集

    print(s1.symmetric_difference(s2))
    print(s1^s2)
    #{1,5}
    

1.5 集合生成式

测试代码:

s={i for i in range(10)}
#结果是无序的
s={i*i  for  i  in  range(10)}
#i*i的位置是输出每个元素的表达式
print(s)

测试结果:

Python__16--集合