[英]For loop is not iterating through all of the items in a list
我目前正在為編碼難題(代碼出現)創建 python 腳本,該難題的目標是從滿足特定條件的列表中刪除數字。 問題是我的 for 循環僅遍歷列表中 4 個項目中的 3 個。 代碼:
def count(data, target_bit):
zero_count = 0
one_count = 0
for numbers in data:
if numbers[target_bit] == '0':
zero_count += 1
else:
one_count += 1
return [zero_count, one_count]
current_list = ["1001", "0001", "1111", "0011"]
oxygen_list = current_list
current_index = 1
zero_count = count(current_list, current_index)[0]
one_count = count(current_list, current_index)[1]
if zero_count > one_count:
loop_count = 0
for items in current_list:
print(loop_count)
if items[current_index] == "1":
oxygen_list.remove(current_list[loop_count])
loop_count += 1
print(current_list)
這應該是修改列表的規則之一:當您迭代該列表時,切勿從列表中刪除項目。
相反,您可以構建一個新列表並省略不適合的項目:
if zero_count > one_count:
new_list = []
for items in current_list:
if items[current_index] == "0":
new_list.append(items)
current_list = new_list
您可以使用列表推導更緊湊地執行此操作:
if zero_count > one_count:
current_list = [items for items in current_list if items[current_index] == "0"]
PS:我注意到你調用count
兩次,每次都扔掉一半的結果。 相反,您可以這樣做:
zero_count, one_count = count(current_list, current_index)
if items[current_index] == "1":
oxygen_list.remove(current_list[loop_count])
這里正在刪除第二個數字為 1 的項目
注釋掉這些行,你會看到它將遍歷列表中的所有 4 個項目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.