>>> a = [1,2,3,4,5,6]>>> for item in a:... a.remove(item)... >>> a[2, 4, 6]
看到上面的代碼是不是感覺很奇怪?直觀來看,我們只是想依次把隊(duì)列a中的每個(gè)元素依次刪除,為什么最后的結(jié)果確是[2,4,6]?如果你夠機(jī)智想必應(yīng)該猜出來是什么原因了。對(duì)于每一次for循環(huán),當(dāng)前一次的a.remove(item)執(zhí)行完成后,a相對(duì)的縮短了;item后面的元素補(bǔ)上了之前刪除的位置,導(dǎo)致這次for循環(huán)刪除的是下下個(gè)元素。可見,如果我們的迭代對(duì)象是會(huì)在循環(huán)體中發(fā)生變化的話,使用for語句將會(huì)帶來不可預(yù)知的風(fēng)險(xiǎn)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注