如何随机选择列表中给定值的索引?

Ray*_*out 2 python random list

假设我有以下8x8 2D列表:

[[0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, -1, 0, -1, 0, -1, 0],
[0, -1, 0, -1, 0, -1, 0, -1],
[-1, 0, -1, 0, -1, 0, -1, 0]]
Run Code Online (Sandbox Code Playgroud)

例如,如何获得值"1"的随机索引?

小智 7

这是一个很好的单行程,具有嵌套列表理解:

import random
random.choice([(i, j) for i, row in enumerate(x) for j, val in enumerate(row) if val == 1])
Run Code Online (Sandbox Code Playgroud)

其中x是你的清单.你只要聚集索引列表(i, j),其中val == 1,然后随机选择一个.