我试图找出如何从列表中删除所有2位数的值。现在我收到一条错误信息,不知道它应该是什么样子,这就是我所拥有的:
import random
list1=[0]*20
for c in range(0,20):
list1[c]=random.randint(0,100)
print(list1[c])
for c in range(0,20):
if (list1[c]>9):
list1.pop(c)
print (list1)
如果有人有任何想法会非常感谢,我会不断获得索引超出范围的错误!
答案 0 :(得分:0)
使用删除代替 pop :
>>> mylist = ['one', 'two', 'three', 'four']
>>> mylist.remove('two')
>>> print mylist
['one', 'three', 'four']
您的代码应该是这样的:
list1.remove(c)
答案 1 :(得分:0)
你得到一个超出范围的索引错误,因为当你继续在循环中弹出列表时,列表变得越来越短,其中索引根据之前指定的长度而增加。
让我们说你有: [10 2 3 23 3]
这大致是循环代码中发生的事情:
index 0:10> 9 --->真正。弹出(0)。更新清单:[2 3 23 3]
(注意:所有指数的变化情况。)
索引1:是3> 9 --->假
指数2:23> 9 --->真正。 POP(2)。更新清单:[2 3 3]
索引3:更新列表中没有索引3。因此错误!
您的代码的简单解决方案可能是:
import random
list1=[0]*20
for c in range(0,20):
list1[c]=random.randint(0,100)
print(list1[c])
list2 = []
for c in range(0,20):
if (list1[c]<10):
list2.append(list1[c])
print (list2)
希望它能回答你的问题。 :)