首页 > 解决方案 > 根据条件随机选择列表中的项目

问题描述

我想知道是否可以为列表列表执行 random.choice() 并且只选择一个为 0 的坐标。也有可能两个然后将随机选择的坐标保存到一个变量中?

即我有一个这样的列表列表:

[[0, 2, 0, 0, 0],
 [0, 0, 0, 0, 1],
 [0, 0, 1, 2, 0],
 [0, 2, 0, 0, 0],
 [0, 0, 0, 0, 0]]

我只想选择那些为 0 的坐标,然后将该坐标保存到变量中。

谢谢。

标签: pythonlistrandom

解决方案


使用推导得到项目的坐标等于 0:

import random

L = [[0, 2, 0, 0, 0],
     [0, 0, 0, 0, 1],
     [0, 0, 1, 2, 0],
     [0, 2, 0, 0, 0],
     [0, 0, 0, 0, 0]]

coords = [(x, y) for x, l in enumerate(L) for y, i in enumerate(l) if i == 0]

x, y = random.choice(coords)
>>> L[x][y]
0

推荐阅读