python教程,如何理解ndarray和list使用时的异同之处?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文话题继续说基于python
的ndarray
类型和list
类型的差异,总体上来说,两者是差不多的。但是,有一些重要的差异之处的,两者的表现差异性极强。

大家好,这里是苏南大叔的“程序如此灵动”博客,本文以上一篇ndarray
的出人意料之处为出发点,描述ndarray
和list
类型的一些重要差异点。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。
前文提示
本文的正确理解,需要您查看以下两篇文章:
ndarray
之所以会给苏南大叔造成重大的意外,就是因为上文所说的两个对成员进行设置的地方。那么,本文也是基于上述的意外点展开阐述的。
初始值对后续值的影响不同
初始值的内存容量对后续值有重大影响的是ndarray
,list
类型没有影响!差异明显!
测试代码:
输出:
对于ndarray
来说,初始成员的长度最大值,限制了后续被修改的成员的长度最大值。

对一组数据设置的结果不同
对一组或几组数据进行设置的时候,ndarray
是改变所有的成员变量,而list
是整体替换这几组数据。差异明显!
测试代码:
输出:

输出:

输出不同
这个print
的输出结果,两者也有很大不同。
list
是用逗号隔开的,[]
之间没有换行。ndarray
是用空格隔开的,[]
之间,多一层多个换行。pycharm
可以对ndarray
可视化,确不支持对list
类型的可视化。

整体直接运算
这里以乘法运算为例,
list
是直接成员数量加倍。ndarray
是数字类型数字翻倍,字符类型直接出错。
另外一个例子:
对字符串型的ndarray
,做乘方运算的时候,报错如下:

结束语
没有啥话可说,存在即为合理,既然两者是不同的数据类型,必然有其差异之处!目前看到的差异是这些,不排除将来再继续进行补充!都是苏南大叔自己总结的内容,不妥之处欢迎留言指正。


