天池龙珠--python, 集合

本文介绍了Python中的集合(set)特性,包括其无序、唯一性的特点以及如何创建和操作集合。讨论了工厂函数在创建集合中的作用,并展示了如何将列表或元组转换为集合。此外,还详细说明了集合的内置方法,如添加、更新、移除元素,以及集合的数学运算,如交集、并集和差集。最后,提到了不可变集合frozenset及其用途。
摘要由CSDN通过智能技术生成

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

集合
定义
  • python 中 set 与 dict 类似,相当于没有值(value),只有键(key)
  • 注意: key 为不可变类型,即可哈希的值。
  • 由于 set 存储的是无序集合,所以我们不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中 元素的值,但是可以判断一个元素是否在集合中。

1.无序 2.互异(唯一) 3. 确定

创建集合

注意:num = { },空字典

​ num = {1, 2, 3, 4} 只有 key, 没有值(value)。从形式上只有 key

​ 创建 空集合 : set( )

num = {}
print(type(num)) # <class 'dict'>
num = {1, 2, 3, 4}
print(type(num)) # <class 'set'>

工厂函数

工厂函数(Factory Function)是一种设计模式,它是一种函数,用于创建并返回其他对象(通常是类的实例)。工厂函数提供了一种简单而灵活的方式来创建对象,而不需要直接调用类的构造函数。

在 Python 中,工厂函数是一个普通的函数,它通常用于创建和返回一个类的实例,而不需要直接使用类的构造函数。工厂函数可以接受不同的参数,根据参数的不同来创建不同类型或配置的对象。

使用工厂函数时,我们只需要传入相应的参数,而无需直接调用类的构造函数。这样可以使代码更加简洁和灵活,同时提供了一个统一的接口来创建对象。工厂函数允许我们根据需求定制化对象的创建过程,使代码更具扩展性和可维护性。

set(value) 工厂函数, 把列表或元组转换成集合

len(set( )) , 使用len()内建元素得到集合大小

in 或 not in 判断元素是否在集合中已经存在

集合的内置方法
方法描述
set.add(elmnt)用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
set.update(set)用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在, 则该元素只会出现一次,重复的会忽略。
set.remove(item)用于移除集合中的指定元素。如果元素不存在,则会发生错误。
set.discard(value)用于移除指定的集合元素。 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
set.pop()用于随机移除一个元素。
集合论

由于 set 是无序和无重复元素的集合,所以两个或多个 set 可以做数学意义上的集合操作。

方法描述
set.intersection(set1, set2 …)返回两个集合的交集。
set1 & set2返回两个集合的交集
set.intersection_update(set1, set2 …)交集,在原始的集合上移除不重叠的元素。
set.union(set1, set2…)返回两个集合的并集。
set1 | set2返回两个集合的并集。
set.difference(set)返回集合的差集。
set1 - set2返回集合的差集。
set.difference_update(set)集合的差集,直接在原来的集合中移除元素,没有返回值。
set.symmetric_difference(set)返回集合的异或。
set1 ^ set2返回集合的异或。
set.symmetric_difference_update(set)移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
set.issubset(set)判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
set1 <= set2判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
set.issuperset(set)用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
set1 >= set2判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
set.isdisjoint(set)用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。
不可变集合

​ Python 提供了不能改变元素的集合的实现版本,即不能增加或删除元素,类型名叫 frozenset 。需要注意的 是 frozenset 仍然可以进行集合操作,只是不能用带有 update 的方法。

frozenset([iterable]) 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

练习

怎么表示只包含⼀个数字1的元组。

x = (1,)

创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。

x = set()
x.add('x')
x.add('y')
x.add('z')
print(x)  # {'x', 'y', 'z'}

列表[‘A’, ‘B’, ‘A’, ‘B’]去重。

a = ['A', 'B', 'A', 'B']
x = set(a)
print(x)  # {'B', 'A'}

求两个集合{6, 7, 8},{7, 8, 9}中不重复的元素 差集指的是两个集合交集外的部分。

a = {6, 7, 8}
b = {7, 8, 9}
c = a - b
print(c)  # {6}

求{‘A’, ‘B’, ‘C’}中元素在 {‘B’, ‘C’, ‘D’}中出现的次数。

a = {'A', 'B', 'C'}
b = {'B', 'C', 'D'}
frequency = 0
for x in a:
    for y in b:
        if x == y:
            frequency += 1
print(frequency)  # 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值