数据结构【3】:数组 VS 列表

一、创建方式不同

list是Python中基础的数据类型,不用引入任何库包,直接使用**方括号[ ]**创建即可(例如:a=[‘CSDN’,‘123’]);数组的建立需要先导入库numpy,其中最简单的建立方式就是利用numpy库中的array函数。

# 列表创建方式
my_list = [1, 2, 3, 4, 5]
another_list = list(range(1, 6))

# 数组创建方式
import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
another_array = np.arange(1, 6)

二、存储的元素类型不同

列表(List)可存储不同的数据类型,如a = [1, 2, “111”],其中1,2为int类型,"111"为str类型。
数组存储的数据类型必须一致,如a = np.array([1, 2, “111”]),可利用print(a)查看数组a中存在的结果为:[“1”, “2”, “111”],从中可以看出即使在书写时1,2为int类型,但由于"111"为字符串类型,则a中的元素均转换为字符串类型

# 列表可以存储不同类型的元素
my_list = [1, 'hello', True]
 
# 数组存储同一类型的元素
import numpy as np
g=np.array(['欢迎!','这里是CSDN',123])
print(g)
print(type(g[2]))
# 这一段代码看似已经不符合array数组只能存储单一数据的性质,因为123是整型数据,而前面两个元素都是字符串,其实不然,123的数据类型已经被它偷偷的转换了

在这里插入图片描述

三、运算方式不同

列表(List)支持列表的基本操作如索引、切片、追加、插入、删除等,还可利用加号进行列表的拼接列表的基本操作
数组(Array)支持向量化操作,可以进行逐元素的加减乘除等运算,减少了使用循环的需要。数组的基本操作

# 列表支持基本操作
a = [1, 2, 3]
b = [4, 5, 6]
c = a+b
print(c)	# 输出:[1, 2, 3, 4, 5, 6]

# 数组支持向量化操作
import numpy as np

my_array = np.array([1, 2, 3, 4, 5])
print(my_array * 2)  # 输出: [2 4 6 8 10]

四、运行效率不同

列表(List)由于列表可以存储不同类型的元素,使用灵活但效率较低。
数组(Array)是为了精确便捷的处理庞大的类似的数据而产生的,他的存储效率要比列表快着很多

import numpy as np
import datetime
#datetime.datetime.now()是为了获取当前时间
start1=datetime.datetime.now()
g=[]                           #创建一个空列表
for i in range(1,100000):     #循环将1至1000000的数字添入列表中
    g.append(i)
end1=datetime.datetime.now()

start2=datetime.datetime.now()
l=np.array(g)                  #将z列表的数字依次复制到j数组
end2=datetime.datetime.now()

print('list存储时间:',end1-start1)
print('数组存储时间:',end2-start2)

在这里插入图片描述

五、使用场景

根据上述特点,我们可以根据需求选择合适的数据结构。
如果我们需要处理大量相同类型的数据、数值计算、科学计算、大规模数据等任务,那么数组会更适合。同时,使用NumPy库可以提供更多的数值计算功能。

而列表则更适合于处理不同类型的数据存储和处理少量数据,以及需要频繁进行插入、删除操作的场景。

参考:

https://zhuanlan.zhihu.com/p/645078252
https://blog.csdn.net/weixin_66337429/article/details/127912693
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值