簡體   English   中英

從python中的列表中刪除對象,屬性錯誤

[英]Removing objects from a list in python, Attribute error

我幾乎是python的一個完整的初學者,並且在從列表中刪除整數時遇到問題。 我收到一個錯誤,AttributeError:'int'對象沒有屬性'remove',並且我不知道如何解決它。 這可能是非常容易經歷的眼睛,我查看了過去的答案,但始終返回相同的錯誤

repeat = 0  
while repeat <= 4:  
    question_list = [1,2,3,4,5]  
    number = random.choice(question_list)  
    if number == 1:  
        print(question1())  
        repeat = repeat + 1  
        number.remove(1)  
    elif number == 2:  
        print(question2())
        repeat = repeat + 1
        number.remove(2)
    elif number == 3:
        print(question3())
        repeat = repeat + 1
        number.remove(3)
    elif number == 4:
        print(question4())
        repeat = repeat + 1
        number.remove(4)
    elif number == 5:
        print(question5())
        repeat = repeat + 1
        number.remove(5)

number = random.choice(question_list)number分配給從問題列表上調用random.choice返回的int 如果要從question_list刪除,請在列表中刪除而不是number

 question_list.remove(x)

您需要在while循環之外分配question_list ,如果將其放在內部,則將繼續創建新列表,因此刪除操作將永遠不會持續。

question_list = [1,2,3,4,5] # here
while repeat <= 4:

更好的實現可能是使用dict而僅使用range

import random
# map numbers to functions
questions = {1:question1,2:question2,3:question3,4:question4,5: question5}

question_list = [1, 2, 3, 4, 5] # outside loop
for _ in range(4): # loop in range 4 
    number = random.choice(question_list)
    question_list[func]() # call function using dict key val
    question_list.remove(number)

或者只是將函數存儲在列表中,然后隨機選擇一個:

question_list = [question1,question2,question3,question4,question5]
for _ in range(4):
    func = random.choice(question_list)
    func()
    question_list.remove(func)

您應該使用列表上的remove函數,並將int作為參數。 所以它應該變成:

question_list.remove(something)

但是要小心,因為如果沒有“東西”,您將得到一個錯誤。

由於已經有注釋解釋了為什么您的代碼不起作用,所以我想提出一個更簡單的替代方法。

似乎您要隨機調用一些函數。
無需使操作復雜化,也無需從列表中刪除元素。

您可以簡單地獲得一個函數列表,對其進行隨機組合,然后按順序調用每個函數:

questions = [question1, question2, question3, question4, question5]
random.shuffle(questions)

for question in questions:
    question()

暫無
暫無

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

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