2014-03-30 3 views
3

Я искал это в течение некоторого времени и не нашел решения.Генерировать случайное число в диапазоне без определенных цифр

Я думаю, что могу сделать это с некоторыми строками кода, но то, что я ищу, - это простой (возможно, один ответ) ответ.

Я хочу создать список чисел от 4000 до 5000, но без определенных цифр: 7,8 и 9 в моем случае. Есть ли какой-либо модуль или функция внутри random, которая делает это?

ответ

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']) 
+1

, что это именно то, что я хочу, ти. Можете ли вы объяснить мне, что делает это?. Intersection (str (elem))? –

+1

@ JoãoPereira: Проверьте изменения. :) –

Смежные вопросы