python3 数组比较_python3之数组(array)

当我们需要1000万个浮点数的时候,数组(array)的效率要比列表(list)要高得多,因为数组在背后存的并不是float对象,而是数字的机器翻译,也就是字节表述。这一点和c语言中的数组一样。

再比如说,如果需要频繁对序列做先出先进的操作,collection.deque(双端队列)的速度应该会更快。

1.数组

如果我们需要一个只包含数字的列表,那么array.array比list更高效。数组支持所有跟可变序列有关的操作,包括.pop,.insert和.extend。

另外,数组还提供从文件读取和存入文件的更快的方法,如.frombytes和.tofile。

Python数组跟C语言数组一样精简。创建数组需要一个类型码,这个类型码用来表示在底层的C语言应该存放怎样的数据类型。比如b类型码代表的是有符号的字符(signedchar),array(‘b‘)创建出的数组就只能存放一个字节大小的整数,范围从-128到127,这样在序列很大的时候,我们能节省很多空间。

array类型码如下:

Type code C Type Minimum size inbytes‘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 importarray>>> from random importrandom>>> floats = array(‘d‘, (random() for i in range(10**7)))>>> floats[-1]0.021901117799701275

>>> fp = open(‘floats.bin‘, ‘wb‘)>>>floats.tofile(fp)>>>fp.close()>>> floats_2 = array(‘d‘)>>> fp = open(‘floats.bin‘, ‘rb‘)>>> floats_2.fromfile(fp, 10**7)>>>fp.close()>>> floats_2[-1]0.021901117799701275

>>> floats_2 ==floats

True

从python3.4开始,数组(array)类型不再支持诸如list.sort()这种就地排序方法。要给数组排序的话,得用sorted函数新建一个数组:

>>> importarray>>> a = array.array(a.typecode, sorted(a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值