生成无特定数字的范围内随机数



我在谷歌上搜索了一段时间,还没有找到解决办法。

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

我想要的是生成一个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'])

相关内容

  • 没有找到相关文章

最新更新