从列表中删除已删除的元素?

时间:2014-08-10 12:53:42

标签: python python-3.x python-3.4

我已经获得了这个代码(我试图制作的游戏的一部分),它用另一个列表的元素检查列表的元素......基本上,它做的是比较每个列表的每个索引element,如果2索引相等,则将其从列表中删除

这里的代码:

checkctr = 0
x = 0
while checkctr < 4:
    if p1guesslist[x] == hidden[x]: 
        black += 1
        p1nonhidden.remove(hidden[x]) #p1nonhidden is a copy of hidden
        p1nonmatch.remove(hidden[x]) #p1nonmatch is a copy of p1guesslist
    x += 1
    checkctr += 1
for p1guess in p1nonmatch: #p1guess is a 4 digit user input
    if p1guess in p1nonhidden:
        white += 1

代码在输出中如何工作的示例:

hidden = [1, 1, 2, 3] #elements of this is randomly generated
p1guesslist = [1, 3, 2, 4] #elements of this list is from p1guess
black = 2 #initial value is 0
white = 1 #initial value is 0

如果两个列表的索引相等,则黑色获得+1并从列表中删除。然后检查剩余的元素是否在隐藏列表中,如果它们是-white得到+1

问题是,程序应该要求用户输入,直到达到一定数量的数字,所以p1guesslist会在每次输入时更改元素。这是怎么回事:

hidden = [1, 1, 2, 3]
p1guesslist = [1, 3, 2, 4] #first input
black = 2
white = 1

p1guesslist = [1, 1, 2, 3] #second input
ValueError: list.remove(x): x not in list

我知道因为list.remove()会发生ValueError ...

所以我在想是否有办法将检查完成后从隐藏中移除的元素带回来以避免错误

*我在这个在线记事本中放了一个迷你版本的游戏,只是因为你想看到它http://shrib.com/UMYKxGiY我使用Python 3.4.1来制作它

1 个答案:

答案 0 :(得分:-1)

处理异常:

try:
    list.remove(x)
except ValueError:
    pass

。不再“x不在列表中。”