我在谷歌上搜索了一段时间,还没有找到解决办法。
我想我可以用几行代码做到这一点,但我正在寻找的是一个简单的(可能一行)答案。
我想要的是生成一个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'])