2016-11-18 48 views
1

我試圖從列表中刪除不包含用戶輸入的零數量的二進制數字。爲什麼我的列表迭代不工作?

a = [] 

for i in range(512): 
    a.append(format(i, '09b')) 

b = int(input("Enter zeroes: ")) 

for i in a: 
    if i.count('0') != b: 
     del(i) 

for i in a: 
    print(i) 

但運行此代碼仍然會產生9位數的完整列表。我哪裏錯了?

+2

del'不處理列表,而是使用列表理解'a = [i for i if(i.count(「0」)!= b)]' – syntonym

+0

Del不會從您的名單。反正你也做不到。 –

回答

0

您需要使用a.pop才能從列表中刪除某些內容。

但是,你會好得多簡單地重新創建列表,像這樣:

new_a = [i for i in a if i.count('0') == b] 

它的功能更強大,更明確表示你想要做什麼。這也可能更有效。從列表中隨機刪除項目是一種線性操作。如果你這樣做,你可能會得到一個二次算法。重建列表只是線性的。

相關問題