如何在Python中初始化n×n布尔列表?解决类型不符问题
在Python中初始化n×n布尔列表的正确方法
你的代码创建的是元素为整数0的二维列表,而非布尔类型列表;另外type(result_list)输出list是正常的——因为外层结构本身就是列表,你需要关注的是列表元素的类型,而非外层容器的类型。
正确的初始化方式
要创建元素为布尔类型(bool)的n×n二维列表,直接使用布尔值False或True替代整数0/1即可,以下是两种可靠的写法:
方法1:列表乘法+推导式(高效简洁)
n = 5 result_list = [[False] * n for _ in range(n)] # 验证元素类型 print(type(result_list[0][0])) # 输出: <class 'bool'>
注意:不要写成
[[False]*n]*n,这种写法会导致所有子列表指向同一个对象,修改其中一个子列表的元素会影响所有子列表。
方法2:嵌套列表推导式(更灵活)
如果需要动态生成每个布尔值(比如根据条件初始化),可以用嵌套推导式:
n = 5 result_list = [[False for _ in range(n)] for _ in range(n)]
你的代码问题修正
如果坚持用0来初始化,需要显式转换为布尔类型:
n = 5 result_list = [[bool(0)] * n for _ in range(n)] # 此时元素类型为bool,bool(0)等价于False
内容的提问来源于stack exchange,提问作者Rajesh P S
相关产品推荐
相关产品推荐

