如何高效创建存储布尔值的网格(仿扫雷游戏场景)
高效创建全False布尔网格的方法
如果你要搭建类似扫雷的布尔网格,完全不用手动逐个写False,以下几种方法高效又简洁:
基础列表推导式(推荐)
先生成单行全False的列表,再通过推导式构建多行网格。比如要做15行10列的网格:# 生成包含10个False的单行 single_row = [False] * 10 # 生成15行的网格,每行都是独立的新列表 mine_grid = [[False] * 10 for _ in range(15)]注意别用
[[False]*10]*15,这种写法会让所有行指向同一个列表对象,修改某一行的元素会影响所有行,推导式能避免这个问题。用itertools.repeat生成
如果你觉得列表乘法不够直观,可以用itertools模块的repeat函数生成重复元素:import itertools single_row = list(itertools.repeat(False, 10)) mine_grid = [list(itertools.repeat(False, 10)) for _ in range(15)]效果和列表乘法一致,适合需要明确表达“重复生成元素”逻辑的场景。
用numpy创建高效数组(适合大网格)
如果你的网格规模较大,或者需要频繁做批量操作,用numpy库的full函数更高效,内存占用也更小:import numpy as np mine_grid = np.full((15, 10), False, dtype=bool)numpy的布尔数组在内存中按位存储,比普通列表更节省空间,后续的遍历、修改操作也更快。
内容的提问来源于stack exchange,提问作者caleb yoshihara
相关产品推荐
相关产品推荐

