我需要随机选择两个整数之间的整数,但该整数不能在列表中。 我就是这样做的:
bannedReturningCustomersIndex = []
index = next(iter(set(range(0, 999)) - set(bannedReturningCustomersIndex)))
#some code..
bannedReturningCustomersIndex.append(index)
问题是我不是随机选择整数,我从头开始逐一挑选它们......
答案 0 :(得分:2)
转换为列表后使用random.choice
:
import random
bannedReturningCustomersIndex = []
valid_indexes = list(set(range(0, 999)) - set(bannedReturningCustomersIndex))
bannedReturningCustomersIndex.append(random.choice(valid_indexes))
答案 1 :(得分:0)
即使前面的答案是正确的,我也想提出以下approch,它更具可读性和灵活性,并将逻辑与主代码分开。
import random
def iterRandNonBannedCustomers(banned_idx, c_idx=range(0, 999)):
c_idx = list(c_idx)
random.shuffle(c_idx)
return filter(lambda i: i not in banned_idx, c_idx)
该函数返回所有非禁止客户的迭代器。例如,使用它,如下所示:
for customer in iterRandNonBannedCustomers(bannedReturningCustomersIndex):
# do stuff