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