python基础学习12_集合(应用场景、特点、常用功能)

一、了解集合:

1、创建集合:

使用 {} 或 set() , 但是如果要创建空集合只能使用 set() ,因为 {} 用来创建空字典

2、集合的特点:

  • 集合中没有重复数据,可以用集合来去除重复数据;
  • 集合数据是无序的,故不支持下标

3、集合常见的操作方法:

  • 增加
    add():追加数据
    update():追加的数据是序列

  • 删除
    remove():删除集合中的指定数据,如果数据不存在则报错
    discard():删除集合中的指定数据,如果数据不存在也不会报错
    pop():随机删除集合中的某个数据,并返回这个数据

  • 查找判断:
    in:判断数据在集合序列
    not in:判断数据不在集合序列

二、集合实操

1、创建集合

{}创建集合

# 创建有数据的集合,用{}
set1 = {1, 2, 3, 4, 5, 3}
print(set1)  # {1, 2, 3, 4, 5},对重复的3进行了去重
print(type(set1))  # <class 'set'>

set创建集合()

# 创建空集合,只能用set(),因为{}是用来创建空字典的!!!
set1 = set()
print(set1)  # set()
print(type(set1))  # <class 'set'>

2、增加数据

  • add() 一次只能增加一个数据
set1 = {10, 20, 30, 40, 50}

# 增加一个集合中没有的数据
set1.add(100)
print(set1)  
# 输出:{100, 40, 10, 50, 20, 30} 可以看出输出的数据是无序的,且与代码中的数据的书写顺序不一致

# 增加一个集合中有的数据
set1.add(10)
print(set1)  
# 输出:{100, 40, 10, 50, 20, 30} 因为集合中已经有10,所以不做任何新增操作,也不报错

尝试利用add增加两个数据,失败。

set1.add(10, 20)  # TypeError: add() takes exactly one argument (2 given)
set1.add([10, 20])  # TypeError: unhashable type: 'list'
  • update() 只能增加可迭代对象,将序列的元素逐一增加到集合当中
    类似于extend

尝试增加整型数据,报错

set1.update(100)  
# TypeError: 'int' object is not iterable  int不是可迭代对象

将序列的元素逐一增加到集合

# 可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable),可以粗暴地理解可以遍历的数据类型就是可迭代对象。
set1.update([1, 2])
print(set1)  # {1, 2, 100, 40, 10, 50, 20, 30}

set1.update('123')
print(set1)
# 输出:{1, 2, '2', 100, '1', '3', 40, 10, 50, 20, 30}

3、删除数据 (重点:remove、discard)

  • remove() 删除指定数据,数据不存在则报错
set1 = {10, 20, 30, 40, 50}
set1.remove(10)
print(set1)  # {40, 50, 20, 30}

# 删除不存在的数据
set1.remove(100)
print(set1)  # KeyError: 100  删除的数据在集合中不存在,【报错】
  • discard() 删除指定数据,如果数据不存在也不会报错
set1 = {10, 20, 30, 40, 50}
set1.discard(10)
print(set1)  # {40, 50, 20, 30}

set1.discard(100)
print(set1)  # {40, 50, 20, 30}  删除的数据在集合中不存在,【不报错】
  • pop() 随机删除一个数据,并返回被删除的数据
set1 = {10, 20, 30, 40, 50}

del_num = set1.pop()
print(del_num)  # 40
print(set1)  # {10, 50, 20, 30}
  • clear() 清除数据
# clear
set1 = {10, 20, 30, 40, 50}
set1.clear()
print(set1)  # set()

4、查找判断

  • in: 数据存在于集合之中,返回True
  • not in: 数据存在于集合之中,返回False
set1 = {10, 20, 30, 40, 50}
print(10 in set1)  # True
print(10 not in set1)  # False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值