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

 

 

 

posted @ 2018-11-08 11:13  JAYWX  阅读(314)  评论(0编辑  收藏  举报