1. 程式人生 > >記另一道有意思的面試題

記另一道有意思的面試題

mage img 如果 nbsp 答案 個人 通過 move 就是

b=[2,4,5,6]

for i in b:

if not i%2:

b.remove(i)

這道題的答案為[4,5],這題也是看起來很容易看見答案很容易犯迷糊的題,不就是去掉列表中的所有偶數嗎,為啥4還存在呢,以下是我的個人見解,如果有誤歡迎糾正,當for循環遍歷到2時按照程序流程列表中會將2給刪除,此時的列表結構發生了改變變為了[4,5,6],當再次循環時for循環中記錄已經遍歷過列表中的第一個元素所以從第二個元素開始遍歷,但是此時列表中的第二個元素變為了5,也就將列表第一個元素4給漏掉了,也就是說4雖然是偶數但是他並沒有被遍歷到所以最後成功的存活了下來,我自己又做了一個小實驗,我覺得更印證了我的推測,而且for循環本質就是利用生成器yeild實現的,yeild可以記錄遍歷的位置不過條件如果發生改變記錄的位置會不會相應的改變,通過這個例子大概是不會的了技術分享圖片

記另一道有意思的面試題