如何从包含整数和其他对象的列表中随机选择一个整数?

时间:2016-06-27 09:06:48

标签: python list random

我有一个清单

data=['_','_','A','B','C',1,2,3,4,5]

我需要在1,2,3,4,5中随机获取一个整数 该列表不断修改,所以我只能从最后5个成员中选择

这是我尝试的但是在检索其他成员时抛出错误:

inp2=int(random.choice(data))

6 个答案:

答案 0 :(得分:4)

您可以过滤非整数项目;

inp2 = ramdom.choice([x for x in data if isinstance(x, int)])

答案 1 :(得分:2)

虽然它几乎与Neo的答案相似,但你也可以试试这个:

inp2 = random.choice(filter(lambda d: isinstance(d, int), data))

答案 2 :(得分:0)

创建最后5个元素的列表。

sudo chmod +t -R ~/.bundle/cache/compact_index/

答案 3 :(得分:0)

random.choice([i for i in data[-5:] if isinstance(x, int)])

通过isinstance()检查数据类型[-5:]更安全。

答案 4 :(得分:0)

试试这个。

import operator
inp2 = random.choice(filter(operator.isNumberType, data))

对于这个特定问题,选择最后5个元素也是一个很好的解决方案。

inp2 = random.choice(data[5:])

答案 5 :(得分:0)

我认为最好的解决方案是创建另一个列表,其中只有你想要选择的int值。 我不知道您指定的作业,但是例如,如果您有一个添加到列表的方法,只需添加:

def add(self, element):
   self.data.append(element)
   if type(element) == int:
      self.data_int.append(element)

然后只使用:

def get_value(self):
   return random.choice(self.data_int)