Python没有从列表中删除元素

时间:2018-07-15 18:52:07

标签: python list

我有一个字典,其中包含一些我想问的问题,键的范围是1到7。我还有一个包含以下元素的列表:[1, 2, 3, 4, 5, 6, 7],它表示要使用的键用在字典中,我将列表随机化,以便随机提问。但是,一旦提出问题,我就希望从列表中删除第一个元素,这样就不再需要再次提出该问题,从而最终不存在任何问题(要删除的元素的实际内容)每次都会有所不同),但是每当我运行代码时,列表的大小便保持不变

def random_function():


    questions = {
        1: "Describe what the instruction 'BRP' does.",
        2: "Describe what is meant by the term 'Open Source Software'.",
        3: "What is meant by the term 'Lossy Compression'?",
        4: "What is the number '55' as an 8-bit unsigned integer?",
        5: "What might a printer use RAM for?",
        6: "Describe the term 'firewall'.",
        7: "Describe the Rapid Application Development process."
    }



    random_list = [1, 2, 3, 4, 5, 6, 7]
    random.shuffle(random_list)

    question = Label(root, bg="white", text=questions[random_list[0]], font = ("Segoe UI", 14))
    question.place(x=20, y=20)

    print(random_list) #just to troubleshoot 

    del(random_list[0])


    root_win2()


def root_win2():
    global question, random_list, questions

    next_button = Button(text="Next Question", command=random_function, height=3, width=12)
    next_button.place(x=370, y=300)

(请注意,首先运行root_win2()函数,然后再跳转到random_function()函数,然后再跳回到root_win2()函数,等等。)

我在这里做错什么了吗?

3 个答案:

答案 0 :(得分:1)

您需要将random_list保留在从其中删除项目的功能random_function之外。

答案 1 :(得分:0)

随机函数中没有循环,因此您每次都要创建列表,删除第一个值,然后再次创建。

答案 2 :(得分:0)

乍一看,似乎每次您调用“ random_function()”时,您都在将random_list声明为[1、2、3、4、5、6、7]。

可能想将random_list =移动到该函数的[1,2,3,4,5,6,7] 外部,并将其全局设置为快速解决方案,以便在您再次调用它时,您没有声明相同的初始数组。