關(guān)于“更新set”的作業(yè)
作業(yè)任務(wù)如下:
針對(duì)下面的set,給定一個(gè)list,對(duì)list中的每一個(gè)元素,如果在set中,就將其刪除,如果不在set中,就添加進(jìn)去。
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)
?
?
?結(jié)果就出錯(cuò)了:
Traceback (most recent call last):
? File "<pyshell#54>", line 2, in <module>
??? for x in s:
RuntimeError: Set changed size during iteration
2016-08-26
for y in L: ? ?于s,L定義是平級(jí)的 ?不要加4個(gè)空格
2016-09-22
這樣寫就算運(yùn)行正確結(jié)果也肯定錯(cuò)了:
set屬于無序列表,你這樣每次直接往里面插入或者刪除數(shù)據(jù)后,序列肯定會(huì)有變化
按照你這樣循環(huán)屬于死循環(huán),例如第一次循環(huán),你就給s中新增了?'Lisa', 'Paul',s就變成set(['Lisa', 'Paul', 'Lisa', 'Paul']),按照這樣就陷入了死循環(huán),你可以自己推一下就知道了
2016-08-26
for y in L: ? 前面多家了空格