例如:
list = [A, B, C]
rand = random.randrange(0, len(list)
return list[rand]
我想返回除"B"以外的任何值,所以索引为1。
根据您的用例,我可以选择:
a = ['a', 'b', 'c']
random.choice([i for i in a if not i == 'b'])
或者:
random.choice([val for i, val in enumerate(a) if not i == 1])
如果只有一个索引要排除,则可以对列表的其余部分使用random.cochoice(((例如,使用下标组装(:
import random
L = ['A', 'B', 'C']
i = 1
r = random.choice(L[:i]+L[i+1:]) # 'A'
如果有多个索引要排除,可以从删除排除的索引集中随机选择一个索引:
L = ['A','B','C','D','E','F','G']
exclude = {1,3,4}
i,*_ = random.sample({*range(len(L))}-exclude,1)
r = L[i] # 'C'