我已经搜索了一段时间,但没有找到解决方案。
我认为我可以用几行代码来实现,但我正在寻找一个简单的(可能只有一行)答案。
我想生成4000到5000之间的数字列表,但不包括某些数字:在我的情况下是7、8和9。是否有任何在random
内部执行此操作的模块或函数?
Something like this would do.
>>> 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'])
.intersection(str(elem))
是什么意思吗? - João Pereira