Python使用random.choice从二维列表筛选0值坐标并随机抽取保存
实现方案
可以实现,直接对原二维列表调用random.choice()只会随机返回一整行,没法直接定位到值为0的单个元素坐标,所以更简单的思路是先筛选出所有值为0的坐标存为列表,再对这个坐标列表调用random.choice()抽取即可。
完整代码示例
import random # 你的示例二维列表 matrix = [ [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的坐标 (行索引, 列索引) zero_coords = [] for i in range(len(matrix)): for j in range(len(matrix[i])): if matrix[i][j] == 0: zero_coords.append((i, j)) # 第二步:随机抽取一个坐标存入变量 selected_coord = random.choice(zero_coords) print("抽取到的坐标:", selected_coord) print("对应位置的值:", matrix[selected_coord[0]][selected_coord[1]])
补充说明
- 如果你需要一次性抽取多个不重复的0值坐标,可以把
random.choice换成random.sample(zero_coords, k=你要抽的数量),返回的是坐标列表。 - 如果二维列表尺寸很大,且需要多次抽取,建议只在首次初始化时生成一次
zero_coords列表,后续直接复用即可,不需要每次都重新遍历收集。
内容的提问来源于stack exchange,提问作者user2629628
相关产品推荐
相关产品推荐

