创建随机数,不包括列表中的数字

时间:2017-01-13 21:40:40

标签: python python-2.7

所以,让我们说我有一个数字列表(不是特定的范围,可能会改变),并希望生成一个排除列表中数字的随机数。

排除的数字列表来自SQL查询。

,随机数的唯一限制是位数,可以来自:

random_number = ''.join(random.choice(chars) for _ in range(size))

所以我想生成随机数(带有大小限制),不包括数字列表。

while random_number in exclude_list:
    random_number = ''.join(random.choice(string.digits) for _ in range(size))

有没有pythonic方式(除了使用while循环)这样做?

示例:生成一个2digit随机数,该数字列表中不存在,如exclude_list = [22,34,56,78]

1 个答案:

答案 0 :(得分:3)

您可以使用random.choice致电set,以排除您不希望成为随机选择内容的列表中的项目:

>>> import random

>>> my_list = [1, 2, 3, 4, 5, 6, 7]
>>> exclude_list = [3, 6, 7]

# list containing elements from `my_list` excluding those of `exclude_list`
>>> valid_list = list(set(my_list) - set(exclude_list))

>>> random.choice(valid_list)
5  # valid random number