真的,真的,从Python循环列表中删除一个项目

0 python list

我想要的是:我希望列表q只出现三次.出现时,系统会提示您选择其中一个列表项.每次选择一个示例时,我希望它消失并且无法再次选择 - 我甚至不想选择它来显示.因此,当选择示例1时,它会显示列表,其中包含示例2和3.然后,接下来选择示例3 - 列表应该显示,之后仅示例2可用.相反,它显示1和2都可用,即使先前已删除1.

所以问题是该项目在删除时不会从列表中永久删除,而是在下一次打印时返回,这是我不想要的.

for x in range(0,3):
    q = ['example 1', 'example 2', 'example 3']
    select = raw_input("> ")
    if select == "1":
        del q[0]
        print q
    if select == "2":
        del q[1]
        print q
    if select == "3":
        del q[2]
        print q
Run Code Online (Sandbox Code Playgroud)

似乎有很多关于在Python中从列表中删除内容的问题,但我一直在寻找答案,但是我还没有找到适合我特定情况的任何工作.提前抱歉任何愚蠢,我一直在学习编程只有一个月了.

Arc*_*rus 7

您当前代码行为方式的原因是因为列表'q'每次都被初始化.那么你删除列表的方式也是错误的.

您的复制/删除语义是指Python中的深层复制概念,这里不适用.

您想在Python中使用字典类型.

def Foo():
    q = {1:'example 1', 2:'example 2', 3:'example 3'};
    for x in range(0,3):
        select = raw_input("> ")
        if select == "1":
            del q[1]
            print q
        if select == "2":
            del q[2]
            print q
        if select == "3":
            del q[3]
            print q
Run Code Online (Sandbox Code Playgroud)

而且更简洁

def foo():
    q = {1:'example 1', 2:'example 2', 3:'example 3'};
    for x in range(0,3):
        select = raw_input("> ")
        del q[int(select)]
        print q
Run Code Online (Sandbox Code Playgroud)