程序報錯,求解答
s?=?set(['Adam',?'Lisa',?'Paul']) L?=?['Adam',?'Lisa',?'Bart',?'Paul'] for?name?in?s: ????if?name?in?L: ????????s.remove(name) ????else: ????????s.add(name) print?s
為什么這么寫就會報錯呢。從邏輯上來說拿A和B比跟拿B和A比是一樣的啊,求解答
s?=?set(['Adam',?'Lisa',?'Paul']) L?=?['Adam',?'Lisa',?'Bart',?'Paul'] for?name?in?s: ????if?name?in?L: ????????s.remove(name) ????else: ????????s.add(name) print?s
為什么這么寫就會報錯呢。從邏輯上來說拿A和B比跟拿B和A比是一樣的啊,求解答
2019-08-22
舉報
2019-08-22
報錯是:RuntimeError: Set changed size during iteration
因為你在遍歷 s 的時候,不能刪除 s 里的元素,這是初學者一個常見的錯誤。
2019-10-27
for循環取完s里所有元素都不會出現L里多出來的元素Bart,所以不會被添加到s中
2019-09-28
按照你這種代碼,那么第5行和第7行的s改成L可以運行不
2019-08-22
是不一樣的,你在s中取值不會出現不在L中的情形,也就是說,在L中的元素無法添加到s中,也就是else永遠無法執行。