2024年最全python进阶系列- 04 集合(1),面试高频问题回答

简介: 2024年最全python进阶系列- 04 集合(1),面试高频问题回答

创建集合set

用大括号{}或者内置函数set()创建集合。

代码

my_set = {"apple", "banana", "cherry"}
print(my_set)
# 创建一个集合,可以使用大括号或者内置函数
my_set_2 = set(["one", "two", "three"])  # 将列表转为集合,自动去重
my_set_2 = set(("one", "two", "three"))  # 将元组转为集合,自动去重
print(my_set_2)
my_set_3 = set("aaabbbcccdddeeeeeffff")  # 将字符串转为集合,自动去重
print(my_set_3)
# 小心:一个空集合不能使用{},因为这会被解释为字典,用set()代替
a = {}
print(type(a))  # 此时为字典
a = set()
print(type(a))

结果

{'banana', 'apple', 'cherry'}
{'three', 'one', 'two'}
{'b', 'c', 'd', 'e', 'f', 'a'}
<class 'dict'>
<class 'set'>

增加元素

调用set.add()函数向集合中添加元素。

代码

my_set = set()
# 用add()方法增加元素
my_set.add(42)
my_set.add(True)
my_set.add("Hello")
# 注意:添加的元素没有顺序,添加的元素可能会在打印时不同
print(my_set)
# 什么也不会发生,因为元素已经存在
my_set.add(42)
print(my_set)

结果

{True, 42, 'Hello'}
{True, 42, 'Hello'}

移除元素

从集合中删除元素,如如下4种方法:

  • set.remove()删除集合中的某个元素,元素不存在时抛出异常KeyError
  • set.discard()删除集合中的某个元素,元素不存在时不抛出异常。
  • set.clear() 清空集合
  • set.pop() 随机返回一个元素,并删除

代码

# remove(x):移除x,如果元素不存在,则抛出KeyError异常
my_set = {"apple", "banana", "cherry"}
my_set.remove("apple")
print(my_set)
# KeyError:
# my\_set.remove("orange")
# discard(x): 如果元素不存在,不会抛出异常
my_set.discard("cherry")
my_set.discard("blueberry")
print(my_set)
# clear():移除所有元素
my_set.clear()
print(my_set)
# pop(): 移除并返回一个随机元素
a = {True, 2, False, "hi", "hello"}
print(a.pop())
print(a)

结果

{'banana', 'cherry'}
{'banana'}
set()
False
{True, 2, 'hi', 'hello'}

检查元素是否在

in 操作符,适合列表、字典、元组 及集合,万能的检查元素是否存在!

代码

my_set = {"apple", "banana", "cherry"}
if "apple" in my_set:
    print("yes")

结果

yes

遍历集合

for循环遍历,适合列表、字典、元组 及集合,万能遍历容器类数据结构!

代码

# 迭代集合
# 注意:顺序不重要
my_set = {"apple", "banana", "cherry"}
for i in my_set:
    print(i)

结果

banana
apple
cherry

合并 和 交集

  • set_a.union(set_b) 返回集合set_aset_b的并集,且不改变set_aset_b
  • set_a.intersection(set_b) 返回集合set_aset_b的交集 ,且不改变set_aset_b

代码

odds = {1, 3, 5, 7, 9}
evens = {0, 2, 4, 6, 8}
primes = {2, 3, 5, 7}
# union(): 合并两个集合,不会有重复
# 注意:这不会改变两个集合
u = odds.union(evens)
print(u)
# intersection(): 求交集
i = odds.intersection(evens)
print(i)
i = odds.intersection(primes)
print(i)
i = evens.intersection(primes)
print(i)

结果

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
set()
{3, 5, 7}
{2}

差集

  • set_a.difference(set_b) 返回集合set_a中不在set_b中的元素,即差集,且不改变set_aset_b
  • set_a.symmetric_difference(set_b) 返回set_set_b中不同的元素

注意: set_a.symmetric_difference(set_b) = set_b.symmetric_difference(set_a) 想想为什么?

代码:

setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setB = {1, 2, 3, 10, 11, 12}
# 差集:返回setA中不在setB中的元素
diff_set = setA.difference(setB)
print(diff_set)
# 反过来,返回setB中不在setA中的元素
diff_set = setB.difference(setA)
print(diff_set)
# symmetric\_difference():返回setA和setB中不同的元素
diff_set = setA.symmetric_difference(setB)
print(diff_set)
# A.symmetric\_difference(B) = B.symmetric\_difference(A)
diff_set = setB.symmetric_difference(setA)
print(diff_set)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典

简历模板


相关文章
|
12天前
|
数据处理 Python
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
|
1天前
|
SQL 关系型数据库 MySQL
Python进阶第二篇(Python与MySQL数据库)
Python进阶第二篇(Python与MySQL数据库)
|
1天前
|
Python
Python进阶第一篇(Python的面向对象)
Python进阶第一篇(Python的面向对象)
|
1天前
|
Python
Python基础第六篇(Python函数进阶)
Python基础第六篇(Python函数进阶)
|
5天前
|
存储 索引 Python
【Python列表解锁】:掌握序列精髓,驾驭动态数据集合
【Python列表解锁】:掌握序列精髓,驾驭动态数据集合
|
5天前
|
开发者 Python
Python进阶--装饰器
Python进阶--装饰器
|
5天前
|
存储 Python 容器
Python零基础入门-5 数据结构(集合和字典)
Python零基础入门-5 数据结构(集合和字典)
|
7天前
|
存储 安全 算法
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
36 8
|
7天前
|
安全 Java 开发工具
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
31 6
|
7天前
|
程序员 Python
Python进阶:错误和异常处理,你的代码还能更健壮吗?
【6月更文挑战第12天】Python编程中的错误和异常处理对确保代码健壮性至关重要。当遇到如文件未找到或除零运算等错误时,Python会抛出异常。通过try-except语句可以捕获并处理异常,例如处理ZeroDivisionError时,可以在except块中给出错误信息。此外,可使用else和finally块进行更精细的控制,以及通过继承Exception类定义自定义异常。掌握这些技巧能帮助编写出更稳定且能优雅处理异常的代码。