Python 以练促学之 Set 篇

《Python 以练促学之 List 篇》 之后,继续收集整理 Python Set 相关练习题。灵感来源于 Edabit ,Edabit 是收集各种编程语言(JS、Python、Ruby、Swift、PHP、Java、C#、C++)练习题的网站,可以在线编码,然后验证答案。目的是以练促学,在经过不断练习后,最终牢固掌握所学知识。

另外,因为 Python Set 的操作通常模仿为数学集定义的操作,例如交集、并集、差集与对称差集等等。学习阶段可以使用 文氏图(Venn diagrams) 辅助,这样更直观,更易理解,可谓一图胜千言。
文氏图

同样和 《Python 以练促学之 List 篇》 一样,也是 10 题,相信经过练习后,在一定程度上,能提高 Python 编码技能。

练习 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)

练习 1

练习 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

练习 2

练习 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

练习 3

练习 4,给定两个 Python 集合,更新第一个集合,使其元素不包含第二个集合中的值

给出:

s1 = {10, 20, 30}
s2 = {20, 40, 50}

预期结果:

{10, 30}

解决方案:

s1.difference_update(s2)

练习 4

练习 5,从给定集合中删除指定元素

给出:

s1 = {10, 20, 30, 40, 50}

预期结果:

{40, 50}

解决方案:

s1.difference_update(s2)

练习 5

练习 6,给定两个集合,返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。

绿色部分的值

给出:

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

预期结果:

{20, 70, 10, 60}

解决方案:

s1.symmetric_difference(s2)

练习 6

练习 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))

练习 7

练习 8,给定两个集合,更新集合 1 的元素,使其排除两者共有元素

给出:

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

预期结果:

{70, 10, 20, 60}

解决方案:

s1.symmetric_difference_update(s2)

练习 8

练习 9,给定两个集合,更新集合 1 ,使其的元素为两者共有的值

给出:

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

预期结果:

{40, 50, 30}

解决方案:

s1.intersection_update(s2)

练习 9

练习 10,向给定的集合添加元素列表

给出:

s = {"Yellow", "Orange", "Black"}
l = ["Blue", "Green", "Red"]

预期结果:

{'Green', 'Yellow', 'Black', 'Orange', 'Red', 'Blue'}

解决方案:

s.update(l)

练习 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值