如何从列表中删除2位数字?

时间:2018-01-20 16:40:55

标签: python-3.x

我试图找出如何从列表中删除所有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)

如果有人有任何想法会非常感谢,我会不断获得索引超出范围的错误!

2 个答案:

答案 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) 

希望它能回答你的问题。 :)