【Python】集合及其常用方法

142 阅读2分钟

集合

集合的特点:

  • 无序【因此:不支持下标(索引)】
  • 不重复

集合的创建:

  1. 使用大括号{}
  2. 使用set()函数

注意:创建一个空集合必须用set(),而不是{},因为{}是用来创建一个空字典。

# 创建一个空字典:
dic = {}
print(dic, type(dic))  # {} <class 'dict'>

# 创建一个空集合:
se = set()
print(se, type(se))  # set() <class 'set'>
"""如果我们集合中的元素是数值类型且属于0-9之间,会按从小到大的顺序排列"""

s1 = {1, 3, 4, 9, 5, 6, 6, 6}
print(s1)  # {1, 3, 4, 5, 6, 9}

s2 = {10, 20, 60, 22, 40}
print(s2)    # {20, 22, 40, 10, 60}

# 集合中的元素可以是字符串:
s3 = set('123456')
print(s3)   # {'4', '1', '3', '5', '6', '2'}

集合的常见操作方法:

增加数据:

add():

使用add()添加的元素,只能是数字、字符串、元组或布尔类型值,不能添加列表、字典、集合这些可变类型的数据。否则,Python解释器会报TypeError错误。

小结:
add(),只能增加不可变数据类型,不能增加可变数据类型
s1 = set('13357')
s1.add(9)
s1.add('9')
print(s1)  # {'7', '3', '1', 9, '9', '5'},因集合是去重,因此只打印一个3
update():追加的数据为序列。
# update()
s2 = {10, 20}
# s2.update(100)   # 报错:“int”对象不可迭代
s2.update([100, 200])
s2.add('abc')
print(s2)  # {'abc', 100, 200, 10, 20}

删除数据:

remove():删除集合中的指定数据,如果数据不存在,则报错。
s2.remove(10)
# s2.remove(30)  # 删除不存在的内容时,报错:KeyError: 30
print(s2)

discard():删除集合中的指定数据,如果数据不存在也不会报错。

"""discard() 删除"""
s3 = {10, 20}
s3.discard(10)
print(s3)      # {20}

s3.discard(100)  # 删除的数据不存在,不会报错,而是返回一个集合
print("删除一个不存在的数据时:", s3)  # {20}

pop():随机删除集合中的一个数据,并返回该数据。

"""pop(),随机删除"""

s4 = set('123456789')
print(s4)  # {'5', '7', '3', '4', '8', '2', '6', '9', '1'}
del_num = s4.pop()  # 随机删除
print(del_num)  # 2
print(s4)  # {'9', '1', '7', '5', '4', '3', '8', '6'}

查找数据:

  • in:判断数据在集合序列
  • not in:判断数据不在集合序列
s5 = set(('apple', '华为', '小米'))
print('apple' in s5)   # True