列表 vs. 数组

2019-08-03  本文已影响0人  钢笔先生

Time: 2019-08-03

列表的好处

列表就是指list,数组是array

列表用起来灵活,简单。

但是从效率和不同的场景来说,可以有其他的选择。比如:

虽然这两个场景中,列表都可以完成。

避免过度使用列表,要综合考虑问题。

列表和数组的区别

首先,我们需要知道列表本身是可以存储不同类型的。
数组中的元素类型必须相同,因为它的底层存储方式是和C一样的。

array.array

Python数组与C语言数组一样精简。

注意,创建数组需要一个类型码

类型码用于表示在底层的C语言应该存储的数据类型。

array.array的类型码

类型码 C类型 最小尺寸(bytes)
'b' signed integer 1
'B' unsigned integer 1
'u' Unicode character 2
'h' signed integer 2
'H' unsigned integer 2
'i' signed integer 2
'I' unsigned integer 2
'l' signed integer 4
'L' unsigned integer 4
'q' signed integer 8
'Q' unsigned integer 8
'f' floating point 4
'd' floating point 8
from array import array
from random import random

# 创建数组
floats = array('d', (random() for i in range(10**7)))
# 存入文件
fp = open('floats.bin', 'wb')
floats.tofile(fp)
fp.close()

floats2 = array('d')
# 读取二进制文件
fp = open('floats.bin', 'rb')
floats2.fromfile(fp, 10**7)
fp.close()

用二进制方式读取比文本方式读取快60倍,写二进制比写文本文件快7倍。且占用空间要更少。

Python的pickle模块可以用于快速序列化数字类型。

END.

上一篇 下一篇

猜你喜欢

热点阅读