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

Python 创建随机数,不包括列表中的数字,python,python-2.7,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.ch

假设我有一个数字列表(不是一个特定的范围,它可能会改变),并希望生成一个随机数,排除列表中的数字

排除的数字列表来自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))
有没有一种类似python的方法(除了使用while循环)可以做到这一点


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

您可以调用
随机。选择
使用
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

您可以使用
set
调用
random.choice
以排除列表中您不想成为随机选择一部分的项目:

>>> 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

排除的数字列表有多大?包含的数字列表有多大?排除的数字列表来自sql查询,因此不是固定长度。我认为您也需要边界来包含,除了列表中的数字之外,从
-无穷大
+无穷大
的随机数是很困难的。如果你表现出你已经在首先解决问题上付出了一些努力,你将有更好的机会得到有用的回答。如果有,请在问题中添加您尝试过的内容。您的编辑让我更加困惑。您希望从哪个范围生成随机数?“排除列表到期”是指列表中的数字应作为随机数生成,或者排除列表中的数字不应是随机生成的数字的一部分?排除的数字列表有多大?包含的数字列表有多大?排除的数字列表来自sql查询,因此不是固定长度。我认为您也需要边界来包含,除了列表中的数字之外,从
-无穷大
+无穷大
的随机数是很困难的。如果你表现出你已经在首先解决问题上付出了一些努力,你将有更好的机会得到有用的回答。如果有,请在问题中添加您尝试过的内容。您的编辑让我更加困惑。您希望从哪个范围生成随机数?“排除列表到期”是指列表中的数字应作为随机数生成,还是排除列表中的数字不应作为随机生成的数字的一部分?