作者:变优秀的小白
Python中list和array区别
什么是python中的列表(list)?
列表(list
)是Python
内置的数据结构,它拥有很多重要的特性
- 列表的基本形式 -> 如
[item1, item2, itme3]
- 列表是
有序的
-> 即列表中项目以特定顺序显示,使我们可使用索引来使用任何项目 - 列表是
可变的
-> 意味着你可以创建列表后进行添加或删除列元素 - 列表元素
不唯一
-> 意味着可以有相同的元素在一个列表中,每个元素有自己独立的存储空间且通过索引进行访问 - 列表元素可以是
不同的数据类型
-> 意味着你可以在一个列表中组合多种类型的元素
适用场景: 保存序列、迭代、递归
什么是python中的数组(array)?
一个数组也是一个数据结构,在Python
中你使用数组的话,需要导入array
或NumPy
的包
特性与列表类似:
- 有序的
- 可变的
- 基本形式为方括号
- 不唯一
注意的是!
-
Python
中的数组模块需要所有数组元素都具有相同类型
举个例子:
# 指定i,表示所有元素都为int类型
array_1 = arr.array("i", [3, 6, 9, 12])
print(array_1)
print(type(array_1))
output
array('i', [3, 6, 9, 12])
<class 'array.array'>
- 而
NumPy
不同,支持所有不同的数据类型
举个例子
array_2 = np.array(["numbers", 3, 6, 9, 12])
print (array_2)
print(type(array_2))
output
['numbers' '3' '6' '9' '12']
<class 'numpy.ndarray'>
所以,列表和数组有啥区别呢?
- 数组需要声明,列表不用(因为是python内置的)。
- 数组可以高效的存储数据(特别是面向大量数据时)。
- 数组非常适合数组运算,而列表不行(报错)。
我们可以直接看看例子
- 这是数组的
array = np.array([3, 6, 9, 12])
division = array/3
print(division)
print (type(division))
# output
[1, 2, 3, 4]
<class'numpy.ndarray'>
- 这是列表的
list = [3, 6, 9, 12]
division = list/3
# output
TypeError Traceback (most recent call last)
in ()
1 list = [3, 6, 9, 12]
----> 2 division = list/3
TypeError: unsupported operand type(s) for /: 'list' and 'int'
当然是可以对列表进行数值运算的(通过for循环, 效率很低)
那我们如何选择数组或列表呢?
- 场景一: 需要存储相对较短的元素序列且不进行数值运算,使用
列表
。 - 场景二: 元素序列很长,使用
数组
。因为数组结构提供了更有效的数据结构 - 场景三: 对元素组合进行数值计算,使用
数组
结束语:如果遇到什么疑问或者建议的,可直接留言评论!作者看到会马上一一回复
如果觉得小白此文章不错或对你有所帮助,期待你的一键三连💫!❤️ni