python中any()和all()如何使用
和 对于检查两个对象相等时非常实用,但是要注意, 和 是python内置函数,同时numpy也有自己实现的 和 ,功能与python内置的一样,只不过把 类型加进去了。因为python内置的对高于1维的 没法理解,所以numpy基于的计算最好用numpy自己实现的 和 。
本质上讲, 实现了或(OR)运算,而 实现了与(AND)运算。
Return if any element of the iterable is true. If the iterable is empty, return .
伪代码(其实是可以运行的python代码,但内置的any是由C写的)实现方式:
对于all(iterables),如果可迭代对象iterables中所有元素都为 则返回 。特例:若可迭代对象为空,比如空列表 ,则返回 。官方文档如是说:
Return if all elements of the iterable are true (or if the iterable is empty).
伪代码(其实是可以运行的python代码,但内置的all是由C写的)实现方式:
python的模块由两类语言开发,一类为纯python,一类为编译型语言,比如C/C++/Fortran。绝大多数标准库由纯python开发,这是由于python语言具有简洁性及短的开发周期。这些模块的源码很容易获得,在ipython下可用 打印到屏幕上查看,或者写一个脚本保存起来,比如下面这样:
当然,也可以到python安装包下查找,但是效率很低。
python 只能查看用python写的 。可以看看getsource的文档字符串,了解其基本功能。
对于有些模块,通常是关乎运行性能的,一般都由编译型语言开发,比如 模块和for循环N多层的线性代数等模块。所以无法通过 方法获得源码,通常会抛出一个 异常。要查看这些模块的源码,需要到GitHub上的 目录下找,比如在Objects目录下可找到 ,这是 模块的C代码。
那么怎么知道一个模块是内置的呢?可用 或 。比如
一个2X3 ndarray 的例子。用numpy自己实现的 很容易判断两个array是否相等,但python内置的却抛出了异常。
但是,还有更pythonic的写法,因为numpy有一个模块 ,可以直接判断两个array是否完全相等或某个轴相等,其实他也是用 实现的。
其实也不要惊讶,这只是python的常规操作。轮子已经被匠人造好,拿来用就OK了!如果你觉得自己可以造出更金光闪闪的轮子,那就抡起你的斧头;如果觉得已经够完美,那就拿来主义,不要再造了。
领取专属 10元无门槛券
私享最新 技术干货