从python中的列表中删除对象,属性错误

时间:2015-02-22 11:01:12

标签: python list

我几乎是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)

3 个答案:

答案 0 :(得分:2)

number = random.choice(question_list)number分配给您在问题列表中调用int后返回的random.choice。如果您要从question_list列表中移除number来电删除而不是 question_list.remove(x)

question_list

你需要在while循环外指定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)

或者只是将功能存储在列表中并随机选择一个:

{{1}}

答案 1 :(得分:1)

您应该使用列表中的remove函数,并将int作为参数。所以应该成为:

question_list.remove(something)

答案 2 :(得分:1)

由于评论已经解释了为什么你的代码不起作用,我想建议一个更简单的替代方案。

您似乎想要以随机顺序调用一些函数 没有必要按照你的方式使事情复杂化,并且从列表中删除元素。

您可以简单地拥有一个功能列表,将其随机播放,并按顺序调用每个函数:

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

for question in questions:
    question()