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类型。