我有一个清单
data=['_','_','A','B','C',1,2,3,4,5]
我需要在1,2,3,4,5中随机获取一个整数 该列表不断修改,所以我只能从最后5个成员中选择
这是我尝试的但是在检索其他成员时抛出错误:
inp2=int(random.choice(data))
答案 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)