課程
/后端開發
/Python
/初識Python
不看這道題的話,我只是單純的想知道為什么下面這個運行不了,s和l的定義和原題中一樣
for x in s:
??? if x in L:
??????? s.remove(x)
print s
2018-01-22
源自:初識Python 6-10
正在回答
因為你是在s中遍歷的,下面有如果存在的話,s中的元素會被刪除,意味著s的size變了,因為原來是4個,現在一旦刪除就比他少(整個序列就變了),所以他會報錯。那個使用for的里面的元素不能變
qq_愿_22 提問者
這個報錯是:在迭代中設置變更的大小。我的理解是你的x在s中他的索引范圍是比在L這個list的范圍小的,因此在判斷if語句的時候x的范圍已經被for語句給限定死了,所以可以說是超邊界了
remove的意思是如果元素在其中則可以刪除掉,你這個代碼里面并沒有判斷元素是否在s中,而是判斷是否在L中,好,設想一下,如果這個元素在L中出現了,if語句中條件成立,執行下面的代碼,把S中的某個元素刪除,但這時候如果S中沒有這個元素就會出錯
如果在s中循環的話,那么所有的元素都會找到,s中數據肯定就不會刪除了
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-01-24
因為你是在s中遍歷的,下面有如果存在的話,s中的元素會被刪除,意味著s的size變了,因為原來是4個,現在一旦刪除就比他少(整個序列就變了),所以他會報錯。那個使用for的里面的元素不能變
2018-01-23
這個報錯是:在迭代中設置變更的大小。我的理解是你的x在s中他的索引范圍是比在L這個list的范圍小的,因此在判斷if語句的時候x的范圍已經被for語句給限定死了,所以可以說是超邊界了
2018-01-22
remove的意思是如果元素在其中則可以刪除掉,你這個代碼里面并沒有判斷元素是否在s中,而是判斷是否在L中,好,設想一下,如果這個元素在L中出現了,if語句中條件成立,執行下面的代碼,把S中的某個元素刪除,但這時候如果S中沒有這個元素就會出錯
2018-01-22
如果在s中循環的話,那么所有的元素都會找到,s中數據肯定就不會刪除了