我一直在谷歌上搜索一段时间,但还没有找到解决方案。
我想我可以通过一些代码行来做到这一点,但我正在寻找的是一个简单的(可能是一行)答案。
我想要的是生成一个介于4000和5000之间但没有某些数字的数字列表:在我的情况下为7,8和9。 random
内是否有任何模块或功能可以执行此操作?
答案 0 :(得分: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'])