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 in 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)))
>>> 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函数新建一个数组:
>>> import array
>>> a = array.array(a.typecode, sorted(a))

原文地址:https://www.cnblogs.com/haoqirui/p/9977031.html

时间: 2024-10-11 23:02:36

python3之数组(array)的相关文章

oracle 数组 array

一维数组示例如下: -- Created on 2014-5-15 by ADMINISTRATOR DECLARE TYPE Arr1 IS VARRAY(10) OF NUMBER; Tab_1 Arr1; TYPE Arr2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; Tab_2 Arr2; BEGIN -- Test statements here Tab_1 := Arr1(1, 3, 4, 6, 3, 2, 8, 5); FOR a IN

C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲

 使用C++风格的数组,不需要管理内存. array要注意不要溢出,因为它是栈上开辟内存. array适用于任何类型 #include<iostream> #include<array> #include<vector>   //C++的标准库 #include<string>   //C++字符串 #include <stdlib.h> using  std::array; //静态数组,栈上 using std::vector; //动态

Scala 数组-Array

环境: CentOS 6.3 1. 定义且同时初始化数组 $ cat array.scala val numNames2 = Array.apply("France","US","china") println(numNames2(0)) [[email protected] scala]$ scala array.scala France Array.apply("France","US","c

元组Tuple、数组Array、映射Map

一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" , "Spark")1.元组中可以包含不同类型的元素,如上,把鼠标放在riple上,IDE会自动推断出元组riple里面的3个元素类型分别是Int.String.String2.元组实例化后,和数组Array不同,数组Array的索引从0开始,而元组Tuple的索引从1开始.3.调用元

学习Swift -- 数组(Array) - 持续更新

集合类型--数组 Array是Swift中的一种集合类型:数组,数组是使用有序列表储存同一类型的多个值,与OC的NSArray的最大不同是,Swift的数组是值类型,OC的数组是引用类型 声明数组的方法 // 如果声明可变数组 就设置为变量 var someMutableArray = [Int]() // 声明了空数组 类型为Int // 相反声明不可变数组就设置为常量 let someArray = Array(count: 5, repeatedValue: 0.03) // 声明了一个不

数据结构之数组Array

数组Array 基本操作 Status InitArray(int dimm,...)//若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK Status DestroyArray() //销毁数组A Status Locate(va_list ap,int &off) //若ap指示的各下标值合法,则求出该元素在A中相对地址off Status Value(ElemType &e,...) //A是n维数组,e为元素变量,随后是n个下标值.若各下表不越界,则e赋值为所指定的

C#中数组Array、ArrayList、泛型List&lt;T&gt;的比较

在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序集合.数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合. Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义. 数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也非常简单. Array数组具体用法: using System; names

swift基本用法-数组array

数组简单用法 //------------------------------------------------------------------------------ // 1. 数组定义 // 1> 使用[]可以快速定义数组,每一个数组元素使用 , 分隔 // 2> 数组中的数据元素可以是不同类型 var array = ["hello", "swift", 1, 1.2] //---------------------------------

数组(Array)的初始化

如果这样: private static int unsorted[]; for(int i = 1 ; i < 8 ; i ++ ) unsorted[i] = 1 ; 是会报NullPointerException的,原因很简单,数组没有初始化!unsorted没有申请到内存空间,for(..)里面的i都不知道指向哪里. 可以这样声明同时初始化: private static int unsorted[] = new int[8]; 这样unsorted[]里面是8个0.   数组(Arra

JS数组去重,js中数组(Array)的排序(sort)

JS数组去重 var ddd = [1,2,4,5,2, 222,1,5,6]; var uq = {}; var rq = []; for(var i=0; i<9; i++){ if(!uq[ddd[i]]){ uq[ddd[i]] = true; rq.push(ddd[i]); } } return rq; js中数组(Array)的排序(sort)注意事项 var arrDemo = new Array(); arrDemo[0] = 10; arrDemo[1] = 50; arrD