array 高效的数值数组
数组是序列类型,其行为与列表非常相似,只是存储在其中的对象类型受到约束.
数组成员必须是同一种类型,在创建数组的时候,就确定了数组的类型
array 是一个类、可以通过类名arry创建对象、a1 = array('i',[1,2,3,4])
array 可以紧凑地表示基本值的数组:字符,整数,浮点数、
array 通过使用类型代码在对象创建时指定 类型,类型代码是单个字符
数组对象支持索引,切片,连接和乘法的普通序列操作;使用切片分配时,指定的值必须是具有相同类型代码的数组对象;
计算机为数组分配一段连续的内存,从而支持对数组随机访问;
由于项的地址在编号上是连续的,数组某一项的地址可以通过将两个值相加得出,即将数组的基本地址和项的偏移地址相加。
数组的基本地址就是数组的第一项的机器地址。
一个项的偏移地址就等于它的索引乘以数组的一个项所需要的内存单元数目的一个常量表示(在python中,这个值总是1)
[ 'append', 'buffer_info', 'byteswap', 'count', 'extend', 'fromfile', 'fromlist', 'fromstring', 'fromunicode', 'index', 'insert', 'itemsize', 'pop', 'read', 'remove', 'reverse', 'tofile', 'tolist', 'tostring', 'tounicode', 'typecode', 'write']
调试和分析
"pdb" Python交互式源代码调试器工具、支持在源代码行级别设置(条件)断点和单步执行,检查堆栈帧,源代码列表以及在任何堆栈帧的上下文中评估任意Python代码、它还支持事后调试, 可以在程序控制下调用
python debugger 是可扩展的、扩展接口使用模块bdb和cmd、pdb.py
python3 -m pdb myscript.py
pdb命令:
h(elp) [command] 则打印可用命令列表
w(here) 打印堆栈跟踪,最近的框架位于底部。箭头表示当前帧,它确定大多数命令的上下文
d(own) [count] 在堆栈跟踪中向下移动当前帧计数(默认值为1)级别(到较新的帧)
u(p) [count] 将当前帧计数(默认值)向上移动到堆栈跟踪中(到较旧的帧)
s(tep) 执行当前行,在第一个可能的场合停止(在被调用的函数中或在当前函数的下一行中停止)
n(ext) 继续执行,直到达到当前函数的下一行或返回
unt(il) [lineno] 如果没有参数,则继续执行,直到达到数字大于当前数字的行
r(eturn) 继续执行,直到当前函数返回
c(ont(inue)) 继续执行,仅在遇到断点时停止
j(ump) lineno 设置将要执行的下一行。仅适用于最底部的框架。这使您可以跳回并再次执行代码,或者跳转到跳过您不想运行的代码。
l(ist) [first[, last]] 列出当前文件的源代码
ll longlist 列出当前函数或框架的所有源代码
a(rgs) 打印当前函数的参数列表
p expression 评估当前上下文中的表达式并打印其值
whatis expression 打印表达式的类型
source expression 尝试获取给定对象的源代码并显示它
display [expression] 每次执行在当前帧中停止时,显示表达式的值(如果已更改
undisplay [expression] 不要在当前帧中再显示表达式。如果没有表达式,请清除当前帧的所有显示表达式
interact 启动一个交互式解释器、其全局命名空间包含当前作用域中找到的所有(全局和本地)名称
run [args ...]
restart [args ...] 重新启动已调试的Python程序
q(uit) 退出调试器。正在执行的程序被中止
解压序列赋值给多个变量、通过简单赋值
解压可迭代对象赋值给多个变量、通过简单赋值 和星号操作符*
保留最后 N 个元素、保留有限历史记录正是 collections.deque 大显身手的时候、deque(maxlen=N)
查找最大或最小的 N 个元素、heapq 模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题
实现一个优先级队列、heapq 模块、函数 heapq.heappush() 和 heapq.heappop() 分别在队列 _queue 上插入和删除第一个元素, 并且队列 _queue 保证第一个元素拥有最高优先级
字典中的键映射多个值、
网友评论