簡體   English   中英

如果元素是特定數字的倍數,則刪除列表中的特定元素

[英]Removing certain element in a list if element is multiples of a certain number

我想從列表中刪除5的倍數的元素。 在“ ######”下面的代碼中,我嘗試了>> number_list.pop(i),它顯示索引超出范圍錯誤。 我也嘗試過>> return number_list.pop(i),它似乎只刪除了第一個數字25。main()中的代碼已給出,我需要完成該功能。 我可以通過創建另一個列表並存儲不是5的倍數的數字來輕松完成此操作,但是看來我必須使用給定的列表“數字”來弄清楚。 如果能在此編碼方面獲得一些幫助,將不勝感激。 謝謝。

ps。 使用python 3.5

def main():

    numbers = [25, 5, 9, 10, 15, 8]
    print(numbers)
    remove_multiples(numbers, 5) # remove multiples of 5
    print("Numbers left", numbers) 

def remove_multiples(number_list, multiples_of):


    for i in range(len(number_list)):
        if number_list[i] % multiples_of == 0:
            ################### 
    return number_list

main()
def remove_multiples(number_list, multiples_of):
    pivot = 0
    for i,value in enumerate(number_list):
        if value % multiples_of != 0:
            number_list[pivot] = value
            pivot += 1
    del number_list[pivot:]
    return number_list

將可用元素移到最前面,然后刪除其余元素

def main():  
    numbers = [25, 5, 9, 10, 15, 8]
    print(numbers)
    remove_multiples(numbers, 5) # remove multiples of 5
    print("Numbers left", numbers) 

def remove_multiples(number_list, multiples_of):
    for i in number_list:
        if i % multiples_of == 0:
            number_list.remove(i)
    return number_list

main()

希望這就是您想要的。

從當前正在迭代的列表中刪除元素絕不是一個好主意。

而是使用列表理解來創建並返回沒有不必要元素的新列表:

def remove_multiples(number_list, multiples_of):
    return [num for num in number_list if num % multiples_of != 0]

print remove_multiples([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2)
>> [1, 3, 5, 7, 9]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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