鍍金池/ 問答/Python/ Python初學(xué)者args問題,請教教我?

Python初學(xué)者args問題,請教教我?

最近開始自學(xué)python 關(guān)於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我自己加的,為了了解執(zhí)行流程

執(zhí)行完是這樣:

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,不是該先把內(nèi)層迴圈run完繼續(xù)檢查[4, 6, 8, 16]嗎? 而後續(xù)的檢查也是如此,a[1]沒找著就直接回a[0]取新數(shù)字了,請問我該如何理解?

回答
編輯回答
九年囚

intersect函數(shù)的作用是"找出交集", 交集的元素是在每個集合都出現(xiàn)的元素, 如果元素a在集合A1中不存在, 那么它就肯定不在交集中, 沒必要去檢查剩下的集合A2, A3... 所以第一輪以1去檢查[2, 8, 16, 32, 64, 128], 發(fā)現(xiàn) 1 not in a[1] 那么不需要去檢查 a[2]了, 就break, 接著用2去檢查.

2017年10月14日 00:55
編輯回答
離殤

求交集是且的關(guān)系,有一個為假,無需繼續(xù)判斷,結(jié)果即為假。

2017年5月11日 11:18