Python数据结构之Array用法实例


Posted in Python onOctober 09, 2014

本文实例讲述了python数据结构之Array用法,分享给大家供大家参考。具体方法如下:

import ctypes 
 
class Array: 
  def __init__(self, size): 
    assert size > 0, "Array size must be > 0 " 
    self._size = size 
    pyArrayType = ctypes.py_object * size 
    self._elements = pyArrayType() 
    self.clear(None) 
 
  def clear(self, value): 
     for index in range(len(self)): 
       self._elements[index] = value 
 
  def __len__(self): 
    return self._size 
 
  def __getitem__(self, index): 
    assert index >= 0 and index < len(self), "index must >=0 and <= size" 
    return self._elements[index] 
 
  def __setitem__(self, index, value): 
    assert index >= 0 and index < len(self), "index must >=0 and <= size" 
    self._elements[index] = value 
 
  def __iter__(self): 
    return _ArrayIterator(self._elements) 
 
class _ArrayIterator: 
  def __init__(self, theArray): 
    self._arrayRef = theArray 
    self._curNdr = 0 
 
  def __next__(self): 
    if self._curNdr < len(theArray): 
      entry = self._arrayRef[self._curNdr] 
      sllf._curNdr += 1 
      return entry 
    else: 
      raise StopIteration 
 
  def __iter__(self): 
    return self
class Array2D : 
  def __init__(self, numRows, numCols): 
    self._theRows = Array(numCols) 
    for i in range(numCols): 
      self._theRows[i] = Array(numCols) 
 
  def numRows(self): 
    return len(self._theRows) 
 
  def numCols(self): 
    return len(self._theRows[0]) 
 
  def clear(self, value): 
    for row in range(self.numRows): 
      self._theRows[row].clear(value) 
 
  def __getitem__(self, ndxTuple): 
    assert len(ndxTuple) == 2, "the tuple must 2" 
    row = ndxTuple[0] 
    col = ndxTuple[1] 
    assert row>=0 and row <len(self.numRows()) \ 
    and col>=0 and col<len(self.numCols), \ 
    "array subscrpt out of range" 
    theArray = self._theRows[row] 
    return theArray[col] 
 
  def __setitem__(self, ndxTuple, value): 
    assert len(ndxTuple)==2, "the tuple must 2" 
    row = ndxTuple[0] 
    col = ndxTuple[1] 
    assert row >= 0 and row < len(self.numRows) \ 
    and col >= 0 and col < len(self.numCols), \ 
    "row and col is invalidate" 
    theArray = self._theRows[row]; 
    theArray[col] = value

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python uuid模块使用实例
Apr 08 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
解决python大批量读写.doc文件的问题
May 08 Python
Python查看微信撤回消息代码
Jun 07 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
Python搭建HTTP服务过程图解
Dec 14 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
python 监控logcat关键字功能
Sep 04 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
Python离线安装各种库及pip的方法
Nov 28 Python
python中pygame模块用法实例
Oct 09 #Python
python根据文件大小打log日志
Oct 09 #Python
python命令行参数解析OptionParser类用法实例
Oct 09 #Python
python测试驱动开发实例
Oct 08 #Python
python批量提交沙箱问题实例
Oct 08 #Python
python求pi的方法
Oct 08 #Python
python实现简单的TCP代理服务器
Oct 08 #Python
You might like
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
给php新手谈谈我的学习心得
2007/02/25 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP简单遍历对象示例
2016/09/28 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
如何用python批量调整视频声音
2020/12/22 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
贫困证明模板(3篇)
2014/09/16 职场文书
户籍证明模板
2014/09/28 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
幸福终点站观后感
2015/06/04 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫