我已经用谷歌搜索了一段时间,但没有找到解决方案。
我想我可以用几行代码来做到这一点,但我正在寻找的是一个简单的(可能是一行)答案。
我想要的是生成 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'])
关于python - 在没有特定数字的范围内生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22746688/