最近開始自學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]取新數字了,請問我該如何理解?
aluckdog
ibeautiful
相关分类