为何Python中all([[False, True],[False, False]])返回True?
Python内置
all()与Numpy数组all()的行为差异 核心原因:两者的判断逻辑完全不同
1. Python内置all()的逻辑
Python的all()函数会迭代传入的可迭代对象,只判断每个顶层元素本身是否为“真值”:
- 在Python中,非空的容器(比如列表、元组)无论内部元素是什么,都会被判定为
True - 对于嵌套列表
[[False, True],[False, False]],all()会检查两个子列表:bool([False, True])→Truebool([False, False])→True
- 所有顶层元素都是真值,因此返回
True
示例代码:
test = [[False, True],[False, False]] print(all(test)) # 输出:True
2. Numpy数组all()的逻辑
Numpy数组的all()方法,默认会检查数组中所有元素是否全为True(等价于扁平化数组后判断):
- 对于
np.array([[False, True],[False, False]]),数组中存在False元素,因此直接返回False - 如果需要按行/列维度判断,可以指定
axis参数:axis=1:按行判断每行所有元素是否为Trueaxis=0:按列判断每列所有元素是否为True
示例代码:
import numpy as np test = np.array([[False, True],[False, False]]) print(test.all()) # 输出:False print(test.all(axis=1)) # 输出:array([ True, False]) print(test.all(axis=0)) # 输出:array([False, True])
内容的提问来源于stack exchange,提问作者Xiaoyu0131
相关产品推荐
相关产品推荐

