目录

Python基础语法(11)集合

Python基础语法(11)集合

学习目标

  • 创建集合
  • 集合数据的特点
  • 集合的常见操作

创建集合

创建集合可以使用{}或者是set(),但是如果要创建空集合则不能用{},因为{}是用来创建空字典的,空集合只能使用set()函数。

⚠️注意:集合里的数据是没有重复的,如果数据序列不允许内部数据有重复,则使用集合。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 创建一个非空的集合
s1 = {10, 20, 30, 40, 50}
print(s1)  # {50, 20, 40, 10, 30} 没有顺序集合将不支持下标操作
print(type(s1))  # <class 'set'>

s2 = {1, 1, 2, 5, 5, 3, 4, 4}
print(s2)  # {1, 2, 3, 4, 5} 重复数据被去掉了

s3 = set("abcdefg")
print(s3)  # {'d', 'e', 'a', 'b', 'g', 'f', 'c'} 单字符无顺序

# 创建一个空集合
s4 = set()
print(s4)  # set()
print(type(s4))  # <class 'set'>

集合数据的特点

  • 集合时天生去重(没有重复数据)。
  • 集合无序(不能进行排序,元素存在字符时顺序会变化)不能使用下标取值。
  • 集合在元素均为数字时失去无序性,但仍不能使用下标查找。(存疑)

集合常见方法

增加数据

  1. add():用来增加单个单一数据。如:1、99、-1、0、“11”、“abcd”、“a”等。

    1
    2
    3
    4
    5
    6
    7
    
    s1 = {1, 2, 3, 4, 5}
    print(s1)  # {1, 2, 3, 4, 5}
    s1.add(1)  # 集合为可变类型
    print(s1)  # {1, 2, 3, 4, 5},如果插入的数据已存在,集合会去重,不进行任何操作
    s1.add(99)
    print(s1)  # {1, 2, 3, 4, 5, 99}
    s1.add([1,2,3])  # 报错
    

    ⚠️注意:因为集合有去重功能,所以,向集合内追加数据是当前集合已有的数据的话,则不进行任何操作。

  2. update():用来增加一个数据序列。

    1
    2
    3
    4
    
    s1 = {1, 2, 3, 4, 5}
    s1.update([3,4,5,6,7]) # 可以追加字符串、列表、元组、字典,是字符串时会依次加入字符,是字典时会加入key
    print(s1)  # {1, 2, 3, 4, 5, 6, 7}
    s1.update(1)  # 报错,不能追加当个单一数据。
    

删除数据

  1. remove():删除集合中的指定当个数据,如果数据不存在则报错。

    1
    2
    3
    4
    5
    
    s1 = {1, 2, 3, 4, 5}
    s1.remove(1)
    print(s1)  # {2, 3, 4, 5} 数据存在,删除
    s1.remove(9)
    print(s1)  # 数据不存在,报错
    
  2. discard():删除集合中的指定数据,如果数据不存在不会报错。

    1
    2
    3
    4
    5
    
    s1 = {1, 2, 3, 4, 5}
    s1.discard(1)
    print(s1)  # {2, 3, 4, 5} 数据存在,删除
    s1.discard(9)
    print(s1)  # {2, 3, 4, 5} 数据不存在,不报错
    
  3. pop():随机删除某个数据,并返回这个数据。

    1
    2
    3
    4
    
    s1 = {9, 2, 3, 4, 5}
    num = s1.pop()
    print(num)  # 2
    print(s1)  # {3, 4, 5, 9}
    

查找数据

  • in:判断数据在集合序列,如果在返回True,不在返回False。

    1
    2
    3
    
    s1 = {9, 2, 3, 4, 5}
    print(10 in s1)  # False
    print(9 in s1)  # True
    
  • not in:判断数据不在集合序列,如果不在返回True,在返回False。

    1
    2
    3
    
    s1 = {9, 2, 3, 4, 5}
    print(10 not in s1)  # True
    print(9 not in s1)  # False
    

总结

  • 创建集合:创建有数据集合时使用{};创建无数据集合时使用set()。
  • 集合的特征:无序,去重,无下标操作。
  • 常见操作:
    • add():增加单个单一数据。
    • update():增加一个数据序列。
    • remove():删除匹配的指定数据,存在则删除,不存在则报错。
    • discard():删除匹配的指定数据,存在则删除,不存在不会报错,返回原集合。
    • pop():随机删除某个数据,并返回该数据。
    • in:判断数据在这个集合。
    • not in:判断数据不在这个集合。