隨便寫的一個代碼, 發現不加紅框內的那句,可以輸出滿足條件的18個結果,而加上那句之後就只有9個輸出. 下面我們用一個簡單的例子來做演示:
a = [1, 2, 3, 4, 5, 6]
for i in a:
a.remove(i)
print(a)
返回: [2, 4, 6]
循環a刪除a中的所有元素, 但最終的輸出卻不爲空??
因爲在循環a並刪除a的元素時,列表的位置發生了位移,當刪除元素'1'時,第二個元素'2'補位,這樣元素'2'就躲過了被刪除,以此類推...
所以在循環list的時候,不能循環的同時刪除自身元素.
解決辦法:新建一個相同的臨時列表,用for循環臨時列表,刪除原列表中的元素
a = [1, 2, 3, 4, 5, 6]
b = a[:]
for i in b:
a.remove(i)
print(a)
返回值: []