2014-03-30 110 views
3

我一直googling这一段时间,并没有找到一个解决方案。生成范围没有特定数字的随机数

我想我可以用一些代码行来做到这一点,但是我正在寻找的是一个简单的(可能是一行)答案。

我想要的是生成一个4000到5000之间但没有特定数字的数字列表:我的情况是7,8和9。 random内部是否有任何模块或功能?

回答

2

这样的事情会做。

>>> num = [elem for elem in xrange(4000, 5001) if not {'7', '8', '9'}.intersection(str(elem))] 
>>> choice(num) 
4210 
>>> choice(num) 
4640 
>>> choice(num) 
4102 

的理解通过创建一组由琴弦{'7', '8', '9'}的,找到这个集与集在我们数数字的交叉点(从4000产生的5000,既包括在内)。如果交叉点是空的,那么该号码不具有上面指定的任何数字,在这种情况下,我们应该包括该数字,并使用该列表来产生随机数字。

例如,

>>> {'7', '8', '9'}.intersection(str(4555)) 
set([]) 
>>> {'7', '8', '9'}.intersection(str(4765)) 
set(['7']) 
+1

这正是我想要的,TY。你能解释一下'.intersection(str(elem))'是什么吗? –

+1

@JoãoPereira:检查编辑。 :) –

相关问题