python - 根据条件随机选择列表中的项目
问题描述
我想知道是否可以为列表列表执行 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 的坐标,然后将该坐标保存到变量中。
谢谢。
解决方案
使用推导得到项目的坐标等于 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
推荐阅读
- c - 即使没有对齐,GCC 分配的堆栈空间也比本地所需的更多。空间有什么用?
- python - 如何删除阵列中的镜像对和对?
- ios - 为什么 `viewWillTransitionToSize` 中检索 SafeAreaInsets 的逻辑略有错误?
- javascript - 限制 bsmultiselect 中的选定选项
- python - 为什么数据集加载时间过长?
- emeditor - 如何从上下文菜单中禁用 EmEditor?
- mysql - mysql 中的行解释少于实际行
- logstash - 带有hdfs的logstash用于特定的持续时间
- c# - 如何按数组中的值获取变量名?
- r2dbc-mysql - Spring R2DBC:保存实体后如何获取 id (MySQL)