趣玩Python第九期-集合

开篇

歪小王: 大佬们!欢迎回到《趣玩 Python 》!本期节目我们将继续邀请数据结构界的一位嘉宾——Set!掌声有请!

(Set 以一位潇洒自信的角色登场,手里挥舞着一把“大扫帚”,象征着他强大的去重功能)

Set: 大家好,我是 Set,中文叫“集合”。我最擅长的事情就是去重!没错,任何重复的东西到我这儿,通通给你清理得干干净净!

歪小王: 哇,Set 老师,您这登场可真霸气!能跟大家介绍一下您自己和您在 Python 中的神奇能力吗?

基本概念

Set: 哈哈,当然可以!简单来说,集合是一种无序不重复的元素集合。如果你厌烦了列表里的那些重复项,或者不在乎元素的顺序,那我就是你最好的选择!

  • 无序:在我这里,元素是没有顺序的!所以你想通过索引来访问某个元素?别想了,我可不按常理出牌!

  • 不重复:重复的元素在我这里会被自动去掉,绝不留情。

歪小王: 不按常理出牌,这听起来可真有个性!那具体应该怎么创建您呢?

集合的定义:

Set: 使用大括号 {} 创建集合就像创建一个派对嘉宾名单一样简单:

my_set = {1, 2, 3, 4}

当然,如果你想创建一个空集合,那可得用 set(),否则用 {} 创建的将是个空字典!

empty_set = set()  # 这是空集合
empty_dict = {}  # 这是空字典

功能展示

歪小王: 既然集合这么神奇,Set 老师,您能展示一下具体的功能吗?

Set: 没问题!集合不光擅长去重,操作起来还非常灵活。

1. 自动去重:

当你往集合里添加重复的元素时,放心,我会帮你自动去掉这些重复项!

my_set = {1, 2, 2, 3, 4, 4}
print(my_set)  # 输出: {1, 2, 3, 4}

2. 添加元素:

虽然我不允许重复,但你可以随时向我添加新元素。

my_set.add(5)
print(my_set)  # 输出: {1, 2, 3, 4, 5}

3. 删除元素:

如果某个元素你不想要了,我可以帮你轻松删除。

my_set.remove(3)
print(my_set)  # 输出: {1, 2, 4, 5}

当然,如果你担心删除的元素不在集合里,可以用 discard(),不会抛异常。

my_set.discard(10)  # 不会报错

4. 集合操作:

我还有很多专属操作,像是交集并集差集,这些都是我的拿手绝活!

  • 并集:把两个集合合并在一起,去除重复项:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2)  # 输出: {1, 2, 3, 4, 5}
  • 交集:找到两个集合的共同元素:

print(set1 & set2)  # 输出: {3}
  • 差集:找出一个集合中有,而另一个集合没有的元素:

print(set1 - set2)  # 输出: {1, 2}

内置函数和方法

歪小王: Set 老师,听起来您功能强大,不但去重还能做集合运算,那您有哪些内置函数和方法可以帮助我们呢?

Set: 哈哈,下面就来看看我有哪些常用的“法宝”吧!

1. len(set)

返回集合中元素的个数:

my_set = {1, 2, 3, 4}
print(len(my_set))  # 输出: 4

2. set.add(value)

向集合中添加元素:

my_set.add(5)
print(my_set)  # 输出: {1, 2, 3, 4, 5}

3. set.remove(value)set.discard(value)

从集合中删除元素,remove() 如果元素不存在会报错,而 discard() 则不会。

my_set.remove(1)  # 如果 1 存在,删除它
my_set.discard(10)  # 安全删除,不报错

4. set.pop()

随机删除并返回集合中的一个元素。无序集合嘛,谁先出去还真不好说。

my_set = {1, 2, 3}
removed_element = my_set.pop()
print(removed_element)  # 输出可能是 1, 2 或 3

5. set.clear()

清空整个集合,让它变成空集合:

my_set.clear()
print(my_set)  # 输出: set()

6. set.union(set2)set.intersection(set2)

分别用于并集和交集操作:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2))  # 输出: {1, 2, 3, 4, 5}
print(set1.intersection(set2))  # 输出: {3}

应用

歪小王: Set 老师,您在实际编程中有哪些应用呢?可以给我们举几个例子吗?

Set: 当然啦!我的应用场景非常多,比如:

1. 去重:

当你有一堆重复数据,想要把它们变成唯一值的集合时,我是最佳选择:

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list)
print(unique_set)  # 输出: {1, 2, 3, 4, 5}

2. 集合操作:

比如你有两个用户组,想找出他们的共同兴趣,或者各自的独特兴趣时,集合操作就派上用场了!

group1 = {"Alice", "Bob", "Charlie"}
group2 = {"Charlie", "David", "Eva"}

# 共同兴趣
common = group1 & group2
print(common)  # 输出: {'Charlie'}

# 各自的独特兴趣
unique_to_group1 = group1 - group2
print(unique_to_group1)  # 输出: {'Alice', 'Bob'}

歪小王: Set 老师,不愧是数据结构界的“去重大师”!不仅能去重,还能做复杂的集合运算,实在是太实用了!

结尾

歪小王: 感谢 Set 老师今天的精彩分享!有了您的帮助,处理重复数据变得轻而易举。希望大家在日常编程中好好利用集合,避免重复数据的困扰!

Set: 没错,大佬们,记住!人生如同集合,有些东西不需要重复,重要的是独特性和互补性。

歪小王:大佬们,本期内容就到这里了。下期我们将介绍一个非常灵活、简洁的帮手--推导式,推导式能帮助我们优化代码量,且适用于字典、列表、元组。让我们敬请期待~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值