reflexive_closure = [[matrix[i][j] or (i == j and matrix[i][j] == 0) for j in range(n)] for i in range(n)] print("自反闭包为:") for row in reflexive_closure: print(row)为什么输出的列表里有FALSE
时间: 2024-03-26 12:41:59 浏览: 93
WD Reflexive link_windev_
这是因为在 Python 中,布尔值 False 会被转换为整数 0,而布尔值 True 会被转换为整数 1。因此,在 reflexive_closure 列表中,如果矩阵中某个位置的值为 False,它会被转换为整数 0 并存储在列表中。
如果希望只输出矩阵中的非零整数,可以在输出时添加一个判断条件,只输出大于 0 的元素,如下所示:
```
reflexive_closure = [[matrix[i][j] or (i == j and matrix[i][j] == 0) for j in range(n)] for i in range(n)]
print("自反闭包为:")
for row in reflexive_closure:
int_row = [elem for elem in row if isinstance(elem, int) and elem > 0]
print(int_row)
```
这样就只输出了大于 0 的整数元素,False 不会被输出。
阅读全文