3
我一直googling这一段时间,并没有找到一个解决方案。生成范围没有特定数字的随机数
我想我可以用一些代码行来做到这一点,但是我正在寻找的是一个简单的(可能是一行)答案。
我想要的是生成一个4000到5000之间但没有特定数字的数字列表:我的情况是7,8和9。 random
内部是否有任何模块或功能?
我一直googling这一段时间,并没有找到一个解决方案。生成范围没有特定数字的随机数
我想我可以用一些代码行来做到这一点,但是我正在寻找的是一个简单的(可能是一行)答案。
我想要的是生成一个4000到5000之间但没有特定数字的数字列表:我的情况是7,8和9。 random
内部是否有任何模块或功能?
这样的事情会做。
>>> 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'])
这正是我想要的,TY。你能解释一下'.intersection(str(elem))'是什么吗? –
@JoãoPereira:检查编辑。 :) –