python array模块
转自: https://blog.csdn.net/zzh1301051836/article/details/78961968
该模块定义了一个对象类型,可以表示一个基本值的数组:整数、浮点数、字符。
数组模块array的大部分属性及方法的应用:
import array #array.array(typecode,[initializer])——typecode:元素类型代码;initializer:初始化器,若数组为空,则省略初始化器。 arr = array.array('i',[0,1,1,2,3]) print(arr) #array.typecodes——模块属性 print('\n输出一条 包含所有可用类型代码的字符串:') print(array.typecodes)#注意,调用者是模块名,不是某个对象 #array.typecode——对象属性 print('\n输出 用于创建数组的类型代码字符:') print(arr.typecode) #array.itemsize——对象属性 print('\n输出 数组中一个元素的字节长度') print(arr.itemsize) #array.append(x)——对象方法 print('\n将一个新值附加到数组的末尾:') arr.append(4) print(arr) #array.buffer_info()——对象方法 print('\n获取数组在存储器中的地址、元素的个数,以元组形式(地址,长度)返回:') print(arr.buffer_info()) #array.count(x)——对象方法 print('\n获取某个元素在数组中出现的次数:') print(arr.count(1)) #array.extend(iterable)——对象方法:将可迭代对象的元素序列附加到数组的末尾,合并两个序列 print('\n将可迭代对象的元素序列附加到数组的末尾,合并两个序列:') #注意:附加元素数值类型必须与调用对象的元素的数值类型一致 _list = [5,6,7] arr.extend(_list) print(arr) ''' #错误示例 _dict = {'1801':'邓','1802':'杜'} arr.extend(_dict) print(arr) ''' #array.fromlist(list)——对象方法:将列表中的元素追加到数组后面,相当于for x in list: a.append(x) print('\n将列表中的元素追加到数组后面,相当于for x in list: a.append(x):') arr.fromlist(_list) print(arr) #array.index(x)——对象方法:返回数组中x的最小下标 print('\n返回数组中1的最小下标:') print(arr.index(1)) #array.insert(i,x)——对象方法:在下标i(负值表示倒数)之前插入值x print('\n在下标1(负值表示倒数)之前插入值0:') arr.insert(1,0) print(arr) #array.pop(i)——对象方法:删除索引为i的项,并返回它 print('\n删除索引为4的项,并返回它:') print(arr.pop(4)) print(arr) #array.remove(x)——对象方法:删除第一次出现的元素x print('\n删除第一次出现的元素3:') arr.remove(3) print(arr) #array.reverse()——对象方法:反转数组中元素的顺序 print('\n将数组arr中元素的顺序反转:') arr.reverse() print(arr) #array.tolist():将数组转换为具有相同元素的列表(list) print('\n将数组arr转换为一个具有相同元素的列表:') li = arr.tolist() print(li)
输出结果:
array('i', [0, 1, 1, 2, 3]) 输出一条 包含所有可用类型代码的字符串: bBuhHiIlLqQfd 输出 用于创建数组的类型代码字符: i 输出 数组中一个元素的字节长度 4 将一个新值附加到数组的末尾: array('i', [0, 1, 1, 2, 3, 4]) 获取数组在存储器中的地址、元素的个数,以元组形式(地址,长度)返回: (2503098677248, 6) 获取某个元素在数组中出现的次数: 2 将可迭代对象的元素序列附加到数组的末尾,合并两个序列: array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7]) 将列表中的元素追加到数组后面,相当于for x in list: a.append(x): array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7]) 返回数组中1的最小下标: 1 在下标1(负值表示倒数)之前插入值0: array('i', [0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7]) 删除索引为4的项,并返回它: 2 array('i', [0, 0, 1, 1, 3, 4, 5, 6, 7, 5, 6, 7]) 删除第一次出现的元素3: array('i', [0, 0, 1, 1, 4, 5, 6, 7, 5, 6, 7]) 将数组arr中元素的顺序反转: array('i', [7, 6, 5, 7, 6, 5, 4, 1, 1, 0, 0]) 将数组arr转换为一个具有相同元素的列表: [7, 6, 5, 7, 6, 5, 4, 1, 1, 0, 0]
所有数值类型的字符代码表:
##################################
高效的存储一个只包含数字的数组
如果我们需要一个只包含数字的列表, 那么 array.array 比 list 更高效。 数组支持所有跟可变序列有关的操作, 包括 .pop、 .insert 和.extend。 另外, 数组还提供从文件读取和存入文件的更快的方法, 如.frombytes 和 .tofile。
Python 数组跟 C 语言数组一样精简。 创建数组需要一个类型码, 这个类 型码用来表示在底层的 C 语言应该存放怎样的数据类型。 比如 b 类型码 代表的是有符号的字符(signed char) , 因此 array('b') 创建出的 数组就只能存放一个字节大小的整数, 范围从 -128 到 127, 这样在序列 很大的时候, 我们能节省很多空间。 而且 Python 不会允许你在数组里存 放除指定类型之外的数据
展示了从创建一个有 1000 万个随机浮点数的数组开始, 到如
何把这个数组存放到文件里, 再到如何从文件读取这个数组
# 一个浮点型数组的创建、存入文件和从文件中读取的过程 >>> from array import array ➊ >>> from random import random >>> floats = array('d', (random() for i in range(10**7))) ➋ >>> floats[-1] ➌ 0.07802343889111107 >>> 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() >>> floats2[-1] ➐ 0.07802343889111107 >>> floats2 == floats ➑ True