从列表中删除元素但范围已更改?

时间:2014-04-08 07:54:33

标签: python python-3.x coding-style

我刚学会了如何从list中删除某些内容。

rando = keywords[random.randint(0, 14)]
h = 0
for h in range(len(keywords)):
    if rando == keywords[h]:
        position = h

realAns = definitions[position]
del keywords [h]

但是,当我使用while循环时,代码的一部分会不断重复,并且由于我通过删除元素更改了范围,因此会发生回溯错误,说它超出范围。我该如何解决? 谢谢:))

2 个答案:

答案 0 :(得分:0)

代码看起来很好,可能是您没有在列表中定义14个条目的列表'关键字'。

当您尝试访问未定义的列表部分时,会出现“列表超出范围”错误。 例如,请参阅以下代码

list_of_rollnumbers = [11,24,31,57,42,99,132]
print list_of_rollnumbers[7]
print list_of_rollnumbers[9] #both these would give list index out of range error
print list_of_rollnumbers[5] #this would print 99

答案 1 :(得分:0)

你为什么要这样做呢?据我所知,你在随机索引中选择项目,然后查看整个列表以找到项目,以便找到它的索引。只是做:

position = random.randrange(len(keywords))
rando = keywords[position]
realAns = definitions[position]

或者,更简单:

rando, realAns = random.choice(list(zip(keywords, definitions)))