Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从包含整数和其他对象的列表中随机选择整数?_Python_List_Random - Fatal编程技术网

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

Python 如何从包含整数和其他对象的列表中随机选择整数?,python,list,random,Python,List,Random,我有一张单子 data=['_','_','A','B','C',1,2,3,4,5] 我需要随机得到一个1,2,3,4,5之间的整数 列表不断被修改,所以我不能简单地从最后5名成员中进行选择 以下是我尝试的内容,但检索其他成员时出错: inp2=int(random.choice(data)) 可以过滤非整数项 inp2 = ramdom.choice([x for x in data if isinstance(x, int)]) 可以过滤非整数项 inp2 = ramdom.choi

我有一张单子

data=['_','_','A','B','C',1,2,3,4,5]
我需要随机得到一个1,2,3,4,5之间的整数
列表不断被修改,所以我不能简单地从最后5名成员中进行选择

以下是我尝试的内容,但检索其他成员时出错:

inp2=int(random.choice(data))

可以过滤非整数项

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

可以过滤非整数项

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

创建最后5个元素的列表

>>> from random import choice
>>> data=['_','_','A','B','C',1,2,3,4,5]
>>> l = len(data)
>>> data[(l-5):l]
[1, 2, 3, 4, 5]
>>> k = data[(l-5):l]
>>> choice(k)
5
>>> choice(k)
2
>>> 

创建最后5个元素的列表

>>> from random import choice
>>> data=['_','_','A','B','C',1,2,3,4,5]
>>> l = len(data)
>>> data[(l-5):l]
[1, 2, 3, 4, 5]
>>> k = data[(l-5):l]
>>> choice(k)
5
>>> choice(k)
2
>>> 
通过iInstance检查数据类型[-5:]更安全


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

虽然它与Neo的答案几乎相似,但您也可以尝试以下方法:

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

虽然它与Neo的答案几乎相似,但您也可以尝试以下方法:

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

import operator
inp2 = random.choice(filter(operator.isNumberType, data))
对于这个特定的问题,选择最后5个元素也是一个很好的解决方案

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

import operator
inp2 = random.choice(filter(operator.isNumberType, data))
对于这个特定的问题,选择最后5个元素也是一个很好的解决方案

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

我认为最好的解决方案是创建另一个列表,其中只有您想要从中选择的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)

我认为最好的解决方案是创建另一个列表,其中只有您想要从中选择的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)

列表不断被修改,所以我不能简单地从最后5个列表中进行选择members@user3650037乐于帮助:列表不断被修改,所以我不能简单地从最后5个列表中进行选择members@user3650037很乐意提供帮助:您的第一个解决方案将过滤数值类型,如int、float、,long等。但是OP在这里只需要int类型。您的第一个解决方案将过滤数值类型,如int、float、long等。但是OP在这里只需要int类型。