数据结构【3】:数组 VS 列表
2023-12-20 11:38:16
一、创建方式不同
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
文章来源:https://blog.csdn.net/s1_0_2_4/article/details/135097528
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!