注:本篇文章为个人学习笔记仅供学习交流。
目录
集合的修炼——聚灵之所
01
集合的修炼——聚灵之所
话说这修仙界中,修行之道千千万,但最让林羽头疼的莫过这编程之法。今日,师傅玄天真人从那神秘的《Python无极心法》中取出一篇,指向林羽道:“徒儿,此乃编程中极高深的‘集合’之术,你可要好生领悟!”
林羽接过心法细看,只见其上记载:这集合,乃是无序且可变之存在,里面元素各不相同,可进行交集、并集、差集等高深操作。这修炼之第一重,便是要将这集合创建于法典之上。法典中有言:
parame = {value01,value02,...} # 用大括号 {} 创建集合
set(value) # 或用 set() 函数来修炼
林羽似懂非懂,忽见师傅手中一变,竟出现一堆修炼物“sites”,只见师傅将其如数家珍般列出:
sites = {'Google', 'Taobao', '网罗', 'Facebook', '知乎', 'Baidu','Baidu'}
林羽大奇:“师傅,这‘网罗’何意?”玄真人笑道:“你这娃儿,这也知晓不得,随它便是。”说罢,手指轻点法典:
print(sites) # 输出集合,重复的元素都会被自动除去
话音刚落,法典上光华一闪,赫然显示出:
{'知乎', 'Baidu', 'Taobao', '网罗', 'Google', 'Facebook'}
林羽大惊:“这……怎的顺序全乱了?”师傅悠悠道:“此乃集合之无序性,你且记住就好。”
林羽又问:“那这集合可有重复?”师傅手一招,先前的“sites”化作万千光点,光点碰撞之间竟自动融合,重复者消散无踪!林羽看得入神,师傅又道:“集合中不可有重复,此乃修炼之根源。”
正当此时,忽听一阵狂风呼啸,洞府外一阵喧嚣!师傅面色一凛:“不好,有一邪灵潜入修仙界!莫慌,你我正好演练一番!”说罢,师傅从无尽法典中抽出一段奥义:
a = set('abracadabra')
b = set('alacazam')
林羽看得懵懂:“何意?”师傅手指轻点,法典上竟浮现出:
print(a) # {'b', 'c', 'a', 'r', 'd'}
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
话音刚落,洞府外邪灵大叫:“我乃交集魔!”只见师傅念出:
print(a & b) # 交集为这魔物所占,必除之!
洞外顿时安静。林羽又问:“那差集呢?”师傅又念:
print(a - b) # 这便是差集的妙用。
邪灵哀嚎:“吾之根基被破!”旋即消散。
师傅赞道:“今日之课,你且记牢。但这光靠观看修炼奥义可不够,还需你自己亲身演练,方可升级!”见林羽神色懵懂,师傅轻叹:“罢了,我来点拨一二。所谓集合的创建,就好似聚灵之处,可使用大括号或 set(),比如枫儿你此前所见:
cities = {"北京", "上海", "广州"} # 手动输入元素
cities = set() # 创建空集,但若无此法,空集难成
又比如从其他宝物中提炼元素,比如:
cities = set(["北京", "上海"]) # 从列表中提炼
可别小瞧这细微差别,修炼之路,差之毫厘谬以千里啊!”
林羽似有所悟,师傅继续道:“这集合修炼之关键,便是利用交、并、差、异或之术。比如:复制
# 宝盒一
box_a = {"剑", "刀", "枪"}
# 宝盒二
box_b = {"刀", "弓", "斧"}
print(box_a | box_b) # 两盒之并集,尽显所有宝物
print(box_a & box_b) # 共有之宝物,此为交集
如今,这邪灵已除,你我皆得修炼。你且速速修行,修炼成功,我再传与你更高深之术。”
林羽一听,怦然心动,赶忙修炼起来!
师傅见林羽练得认真,又从法典中寻得一练功法:
打怪升级:集合的练习
师傅让林羽看这宝物中的秘密:
a = set('apple')
b = set('apricot')
他问林羽:“这两宝物中,你可知道它们的交集、差集、并集和异或结果?”接着让林羽写下:
print(a - b) # a 和 b 的差集,是何?
print(a | b) # 并集又如何?
print(a & b) # 交集呢?
print(a ^ b) # 异或也写出来吧!
林羽苦思冥想,终领悟奥义,运行法典,果真成功!
师傅又道:“修炼之路漫漫,切莫急躁。这集合之法需反复体悟,你已练气一阶,再努力,踏入筑基期指日可待!”
林羽心中大喜:“多谢师傅指点!”师傅轻轻点头:“去吧,继续修行,我且在此等候你凯旋归来。”
领取专属 10元无门槛券
私享最新 技术干货