ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

当列表不是首选时

2021-09-19 09:35:16  阅读:180  来源: 互联网

标签:10 deque 首选 不是 列表 memv 数组 array dq


数组

from array import array # 引入数组类型
from random import random
floats=array('d',(random()for i in range(10**7))) 
# 利用一个可迭代对象来创建一个双精度浮点数的列表(类型码是'd'),这里的可迭代对象是一个生成器表达式
floats[-1]# 查看数组的最后一个元素
0.39807560121397423
fp=open('floats.bin','wb') 
floats.tofile(fp) # 把数组存入一个二进制文件里
fp.close()
floats2=array('d') # 新建一个双精度浮点数数组
fp=open('floats.bin','rb')
floats2.fromfile(fp,10**7) # 把1000万个浮点数从二进制文件里读取出来
fp.close()
floats2[-1] # 查看新数组的最后一个元素怒
0.39807560121397423
floats2==floats # 检查两个数组的内容是不是完全一样
True

内存视图

numbers=array('h',[-2,-1,0,1,2])
memv=memoryview(numbers) # 利用含有5个短整型有符号整数的数组(类型码是'h')创建一个memoryview
len(memv)
5
memv[0] # memv里的5个元素跟数组里的没有区别
-2
memv_oct=memv.cast('B') # 创建一个memv_oct,这一次是把memv里的内容转换成'B'类型,也就是无符号字符
memv_oct.tolist() # 以列表的形式查看memv_oct的内容
[254, 255, 255, 255, 0, 0, 1, 0, 2, 0]
memv_oct[5]=4 # 把位于位置5的字节赋值成4
numbers # 因为把占2个字节的整体的高位字节改成了4,所以这个有符号整数的值就变成了1024
# 1,0 即由00000001 00000000 变成了 4,0 即 00000100 00000000,1*2**10=1024
array('h', [-2, -1, 1024, 1, 2])
print(2**8)
256

NumPy和SciPy

import numpy # 安装NumPy之后导入NumPy
a=numpy.arange(12) #新建一个0~11的整数numy.ndarray,然后把他打印出来
a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
type(a)
numpy.ndarray
a.shape # 查看数组的维度,它是一个一维的,有12个元素的数组
(12,)
a.shape=3,4 # 把数组变成二维的,然后打印出来
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
a[2] # 打印出第三行
array([ 8,  9, 10, 11])
a[2,1] # 打印出第三行第二列的元素
9
a[:,1] # 打印出第二列
array([1, 5, 9])
a.transpose() # 把行和列交换,就a进行了转置
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])

双向队列和其它形式的队列

from collections import deque
dq=deque(range(10),maxlen=10) # maxlen是一个可选参数,代表这个队列可以容纳的元素的数量,而且一旦设定,这个属性就不能修改了
dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
dq.rotate(3)# 队列的旋转操作接受一个n,n > 0时,队列的最右边的n个元素会被移动到队列的左边。n < 0时,最左边的n个元素会被移动到队列的右边 
dq
deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6])
dq.rotate(-4) 
dq
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
dq.appendleft(-1) # 当试图对一个已满的队列做头部添加时,他尾部的元素会被删除
dq
deque([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9])
dq.extend([11,22,33]) # 在尾部添加3个元素会挤掉-1,1,2
dq
deque([3, 4, 5, 6, 7, 8, 9, 11, 22, 33])
dq.extendleft([10,20,30,40]) # extendleft(iter)方法会把迭代器里的元素逐个添加到双向队列的左边,因此迭代器里的元素会逆序出现在队列里
dq
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8])

标签:10,deque,首选,不是,列表,memv,数组,array,dq
来源: https://www.cnblogs.com/Reion/p/15310824.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有