可以忽略列表中的某个索引吗

  • 本文关键字:索引 忽略列表 python
  • 更新时间 :
  • 英文 :


例如:

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'

最新更新