继 《Python 以练促学之 List 篇》 之后,继续收集整理 Python Set 相关练习题。灵感来源于 Edabit ,Edabit 是收集各种编程语言(JS、Python、Ruby、Swift、PHP、Java、C#、C++)练习题的网站,可以在线编码,然后验证答案。目的是以练促学,在经过不断练习后,最终牢固掌握所学知识。
另外,因为 Python Set 的操作通常模仿为数学集定义的操作,例如交集、并集、差集与对称差集等等。学习阶段可以使用 文氏图(Venn diagrams) 辅助,这样更直观,更易理解,可谓一图胜千言。
同样和 《Python 以练促学之 List 篇》 一样,也是 10 题,相信经过练习后,在一定程度上,能提高 Python 编码技能。
文章目录
- 练习 1,将给定的集合转换为列表
- 练习 2,给定两个集合,返回属于集合 1 且属于集合 2 的元素所组成的集合
- 练习 3,给定两个集合,返回两个集合所有的元素合并在一起组成的集合,并且不包含重复项
- 练习 4,给定两个 Python 集合,更新第一个集合,使其元素不包含第二个集合中的值
- 练习 5,从给定集合中删除指定元素
- 练习 6,给定两个集合,返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
- 练习 7,检查两个集合是否有共同的元素。如果有,显示共同的元素
- 练习 8,给定两个集合,更新集合 1 的元素,使其排除两者共有元素
- 练习 9,给定两个集合,更新集合 1 ,使其的元素为两者共有的值
- 练习 10,向给定的集合添加元素列表
练习 1,将给定的集合转换为列表
给出:
{1, 2, 3, 4}
预期结果:
[1, 2, 3, 4]
解决方案:
s = {1,2,3,4}
# 使用 list() 方法
l = list(s)
# 使用 sorted()
l = sorted(s)
# 使用 [ * set,]
def convert(set):
return [*set, ]
l = convert(s)
练习 2,给定两个集合,返回属于集合 1 且属于集合 2 的元素所组成的集合
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
预期结果:
{40, 50, 30}
解决方案:
# 使用方法
s3 = s1.intersection(s2)
# 还支持操作符
s3 = s1 & s2
练习 3,给定两个集合,返回两个集合所有的元素合并在一起组成的集合,并且不包含重复项
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
预期结果:
{70, 40, 10, 50, 20, 60, 30}
解决方案:
# 使用方法
s3 = s1.union(s2)
# 还支持操作符
s3 = s1 | s2
练习 4,给定两个 Python 集合,更新第一个集合,使其元素不包含第二个集合中的值
给出:
s1 = {10, 20, 30}
s2 = {20, 40, 50}
预期结果:
{10, 30}
解决方案:
s1.difference_update(s2)
练习 5,从给定集合中删除指定元素
给出:
s1 = {10, 20, 30, 40, 50}
预期结果:
{40, 50}
解决方案:
s1.difference_update(s2)
练习 6,给定两个集合,返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
预期结果:
{20, 70, 10, 60}
解决方案:
s1.symmetric_difference(s2)
练习 7,检查两个集合是否有共同的元素。如果有,显示共同的元素
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {60, 70, 80, 90, 10}
预期结果:
{10}
解决方案:
# 如果集合中没有与 other 共有的元素则返回 True。 当且仅当两个集合的交集为空集合时,两者为不相交集合。
if s1.isdisjoint(s2):
print("没有共有元素")
else:
print("两个集合的共同元素是:")
print(s1.intersection(s2))
练习 8,给定两个集合,更新集合 1 的元素,使其排除两者共有元素
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
预期结果:
{70, 10, 20, 60}
解决方案:
s1.symmetric_difference_update(s2)
练习 9,给定两个集合,更新集合 1 ,使其的元素为两者共有的值
给出:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
预期结果:
{40, 50, 30}
解决方案:
s1.intersection_update(s2)
练习 10,向给定的集合添加元素列表
给出:
s = {"Yellow", "Orange", "Black"}
l = ["Blue", "Green", "Red"]
预期结果:
{'Green', 'Yellow', 'Black', 'Orange', 'Red', 'Blue'}
解决方案:
s.update(l)