亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大神幫我看下下面這個為什么運行不liao

不看這道題的話,我只是單純的想知道為什么下面這個運行不了,s和l的定義和原題中一樣

for x in s:

??? if x in L:

??????? s.remove(x)

print s

正在回答

4 回答

因為你是在s中遍歷的,下面有如果存在的話,s中的元素會被刪除,意味著s的size變了,因為原來是4個,現在一旦刪除就比他少(整個序列就變了),所以他會報錯。那個使用for的里面的元素不能變

0 回復 有任何疑惑可以回復我~
#1

qq_愿_22 提問者

非常感謝!
2018-02-07 回復 有任何疑惑可以回復我~

這個報錯是:在迭代中設置變更的大小。我的理解是你的x在s中他的索引范圍是比在L這個list的范圍小的,因此在判斷if語句的時候x的范圍已經被for語句給限定死了,所以可以說是超邊界了

0 回復 有任何疑惑可以回復我~

remove的意思是如果元素在其中則可以刪除掉,你這個代碼里面并沒有判斷元素是否在s中,而是判斷是否在L中,好,設想一下,如果這個元素在L中出現了,if語句中條件成立,執行下面的代碼,把S中的某個元素刪除,但這時候如果S中沒有這個元素就會出錯

0 回復 有任何疑惑可以回復我~
#1

qq_愿_22 提問者

s和l的定義和原題一樣,原題是s=set(['Adam','Lisa','Paul']) L=['Adam','Lisa','Bart','Paul'] s的所有元素L里都有,所以應該不存在這個問題吧
2018-01-22 回復 有任何疑惑可以回復我~

如果在s中循環的話,那么所有的元素都會找到,s中數據肯定就不會刪除了

0 回復 有任何疑惑可以回復我~
#1

qq_愿_22 提問者

就是因為所有元素都能找到,所以所有元素都會被remove掉啊
2018-01-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

大神幫我看下下面這個為什么運行不liao

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號