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

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

關于“更新set”的作業

作業任務如下:

針對下面的set,給定一個list,對list中的每一個元素,如果在set中,就將其刪除,如果不在set中,就添加進去。

s = set(['Adam', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']

我的代碼是:

s = set(['Adam', 'Lisa', 'Paul'])

L = ['Adam', 'Lisa', 'Bart', 'Paul']

??? for y in L:

????? for x in s:

??????? if y==x:

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

??????? else:

???????? ?? s.add(y)

?

?

?結果就出錯了:

Traceback (most recent call last):

? File "<pyshell#54>", line 2, in <module>

??? for x in s:

RuntimeError: Set changed size during iteration


正在回答

3 回答

for y in L: ? ?于s,L定義是平級的 ?不要加4個空格

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

ninebean90 提問者

非常感謝!
2016-08-27 回復 有任何疑惑可以回復我~
#2

ninebean90 提問者

>>> s=set(['Adam','Paul']) >>> L=['Adam','Lisa','Bart','Paul'] >>> for y in L: for x in s: if y==x: s.remove(x) else: s.add(y) for x in s: RuntimeError: Set changed size during iteration
2016-08-27 回復 有任何疑惑可以回復我~
#3

ninebean90 提問者

還是有問題
2016-08-27 回復 有任何疑惑可以回復我~
#4

慕慕0567836 回復 ninebean90 提問者

for 循環的時候不要修改被循環的對象,添加及刪除被循環對象的元素會出現意想不到的問題
2016-08-27 回復 有任何疑惑可以回復我~
查看1條回復

這樣寫就算運行正確結果也肯定錯了:

  1. set屬于無序列表,你這樣每次直接往里面插入或者刪除數據后,序列肯定會有變化

  2. 按照你這樣循環屬于死循環,例如第一次循環,你就給s中新增了?'Lisa', 'Paul',s就變成set(['Lisa', 'Paul', 'Lisa', 'Paul']),按照這樣就陷入了死循環,你可以自己推一下就知道了

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

ninebean90 提問者

不太明白,可以詳細講一下為什么會給s新增‘Lisa’,‘Paul’么?
2016-11-25 回復 有任何疑惑可以回復我~

for y in L: ? 前面多家了空格

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

舉報

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

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

進入課程

關于“更新set”的作業

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

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

幫助反饋 APP下載

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

公眾號

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