为了账号安全,请及时绑定邮箱和手机立即绑定

Python初學者args問題,請教教我?

Python初學者args問題,請教教我?

万千封印 2019-02-24 06:00:36
最近開始自學python 關於args不是很理解 教科書上的碼,作用是找出交集,流程有些不理解 def intersect(*a): res = [] for x in a[0]: print('up ',x) for y in a[1:]: print('down',y) if x not in y : break else: res.append(x) print('res ',res) return res L = [1,2,4,6,8,16,32,64];L2 = [2,8,16,32,64,128];L3 = [4,6,8,16] intersect(L,L2,L3) 裡邊的print我自己加的,為了了解執行流程 執行完是這樣: up 1 down [2, 8, 16, 32, 64, 128] up 2 down [2, 8, 16, 32, 64, 128] down [4, 6, 8, 16] up 4 down [2, 8, 16, 32, 64, 128] up 6 down [2, 8, 16, 32, 64, 128] up 8 down [2, 8, 16, 32, 64, 128] down [4, 6, 8, 16] res [8] up 16 down [2, 8, 16, 32, 64, 128] down [4, 6, 8, 16] res [8, 16] up 32 down [2, 8, 16, 32, 64, 128] down [4, 6, 8, 16] up 64 down [2, 8, 16, 32, 64, 128] down [4, 6, 8, 16] [8, 16] 不明白為何像第一輪的迴圈以1去檢查[2, 8, 16, 32, 64, 128]後就直接回到頂層取2,不是該先把內層迴圈run完繼續檢查[4, 6, 8, 16]嗎? 而後續的檢查也是如此,a[1]沒找著就直接回a[0]取新數字了,請問我該如何理解?
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

intersect函数的作用是"找出交集", 交集的元素是在每个集合都出现的元素, 如果元素a在集合A1中不存在, 那么它就肯定不在交集中, 没必要去检查剩下的集合A2, A3... 所以第一轮以1去检查[2, 8, 16, 32, 64, 128], 发现 1 not in a[1] 那么不需要去检查 a[2]了, 就break, 接着用2去检查.

查看完整回答
反对 回复 2019-03-01
?
ibeautiful

TA贡献1993条经验 获得超5个赞

求交集是且的关系,有一个为假,无需继续判断,结果即为假。

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 481 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信