簡體   English   中英

For 循環沒有遍歷列表中的所有項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM