大家在带娃写代码的时候,有没有遇到过这种尴尬:想收集一堆数据,但里面总是混着各种重复的废话,比如让孩子从一段英文里把出现的单词全部挑出来,结果单是一句“Whatever is worth doing is worth doing well”,里面的 is 和 worth 就重复出现了好几次!
如果用列表去一个个比对删除,代码写得又长又累。
今天给大家分享 Python 里专门用来自动消灭重复项的超级利器——集合(Set)!知识点全是大白话,赶紧带娃搞懂它!
🙅♂️ 什么是集合?一个不许“复读”的聚会
用大白话解释,集合(set)就是一个无序、且绝对不允许有重复元素的数据大仓库!
我们之前学过的数据结构,各有各的特色:
因为字典的暗号(键)是绝对不能重复的,所以集合也继承了这个霸道属性:进了集合的数据,哪怕你写了十遍一模一样的,它也会自动帮你擦掉九个,永远只保留一个!
🛠️ 怎么建?千万别踩“空大括号”的坑!
创建集合主要有两种玩法:
1. 直接用大括号把数据塞进去:
set1 = {1, 2, 3, 4, 5, 6}print(set1)2. 把现有的列表直接“强转”成集合:
# 把一个带有重复元素的列表丢进 set() 里面,自动秒变集合set2 = set([1, 2, 3, 4, 5, 6])print(set2)
🚨 重点避坑提醒:很多孩子会下意识觉得,既然集合用大括号 {},那写一个 data = {} 不就得到空集合了吗?错! 在 Python 里,{} 默认是给字典准备的!如果想建一个干干净净的空集合,必须使用内置函数:set1 = set()。
🔍 怎么访问?它没有“门牌号”,必须变身!
这又是集合的一个脾气:它是无序的,所以根本没有索引(下标)的概念! 你不能像列表那样写 set1[0] 去查第一个数,这样写电脑会直接报错。
那想查集合里的数据怎么办?答案是:先把它变回列表!
set1 = {1, 2, 3, 4, 5, 6}# 用 list() 把它转换成列表list1 = list(set1)# 这下就有门牌号啦!想查第几个就查第几个print(list1[0])print(list1[2])💡 实战大招:一秒搞定“单词去重”!
学完上面的知识,咱们直接看这道非常经典的题目: 把英文句子中的所有单词挑出来放到列表里,要求:每个单词不能重复!
句子:"Whatever is worth doing is worth doing well"
如果不用集合,你需要写循环、做判断,极其繁琐。但如果用集合,一行代码搞定:
str1 = "Whatever is worth doing is worth doing well"# 1. str1.split(" "):按空格切开,变成单词列表# 2. set(...):扔进集合,重复的 is 和 worth 瞬间被消灭!# 3. list(...):再变回列表,方便后续使用word_list = list(set(str1.split(" ")))print(word_list)你看,原本繁琐的逻辑,利用“列表拆分 ➔ 集合去重 ➔ 转回列表”这套丝滑连招,瞬间就轻松破解了
!📝 知识点快速总结
集合(set):无序、元素永远不重复。
建空集合:必须用 set(),不能用 {}(那属于字典)。
访问数据:无序无索引,要先用 list() 转成列表。
核心绝技:配合 set() 帮任何列表做一秒自动去重!