上一页 1 ··· 3 4 5 6 7 8 9 10 下一页

2013年9月26日

Python生成器 yield

摘要: 迭代器与list相比较,就for in句型循环拿数据而言: 用list写很简洁,但如果list数据过大,会很消耗资源。 用iteration 迭代器写,则不会消耗那么多资源。他会随用随取,用一个拿一个。但是你要会先写一个迭代器类,然后才能for in,这样就很不简洁。有没有既像list那样简洁,又像迭代器那样省资源的方法呢。yield 生成器来了:#非波那且数列:def func(max): #参数表示要返回前max个非波那且数 #n是计数用,a b分别为第一和第二个肥波那切数 n, a, b = 0, 0, 1 while n < max: yield b... 阅读全文

posted @ 2013-09-26 23:49 李皮筋 阅读(394) 评论(0) 推荐(0) 编辑

Python迭代器

摘要: python迭代器具备两个基本条件:1 实现__iter__方法,返回自身。2 实现next方法,返回下一个元素,并且当元素没有了要抛出StopIteration异常。另外有说法是:一个实现了__iter__的对象是可迭代的,一个实现了next方法的对象是迭代器。class myiter: #接收一个迭代数值 def __init__(self, i): self.i = i #实现__iter__,返回迭代对象自身 def __iter__(self): return self #实现next def next(self): ... 阅读全文

posted @ 2013-09-26 16:53 李皮筋 阅读(301) 评论(0) 推荐(0) 编辑

回顾一下 递归和迭代

摘要: 递归是自己调用自己迭代是根据已知值一个个推算出未知值#递归def f(i): if i <= 10: return i + f(i+1) else: return 0#迭代s = 0def f(): for i in range(3): s += iprint s 阅读全文

posted @ 2013-09-26 16:00 李皮筋 阅读(170) 评论(0) 推荐(0) 编辑

2013年9月4日

python 零散记录(七)(下) 新式类 旧式类 多继承 mro 类属性 对象属性

摘要: python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类。在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方式class A: #手写把元类 metaclass 给 type __metaclass__ = type pass#或者这样写,效果是一样的class B(object): #手动指定继承自object类,object类是最初的类,一切类都是object的子类,是祖宗 pass 对于class A的写法,我的理解是:所谓一切皆对象,类也是对象!类的实例是对... 阅读全文

posted @ 2013-09-04 22:01 李皮筋 阅读(651) 评论(0) 推荐(0) 编辑

2013年9月3日

python 零散记录(七)(上) 面向对象 类 类的私有化

摘要: python面向对象的三大特性: 多态,封装,继承多态: 在不知道对象到底是什么类型、又想对其做一些操作时,就会用到多态 如'abc'.count('a') #对字符串使用count函数返回a的数量['a','b','c'].count('a') #对列表使用count返回a的数量 类型虽然不同,但是都可以调用count()来实现同样的目的,这就是多态。 毁掉多态: 一些类型检查会毁掉多态,如type isinstance issubclass等等。 实际上应该尽量少用这些,而多用多态。创建自己的类 阅读全文

posted @ 2013-09-03 23:26 李皮筋 阅读(375) 评论(0) 推荐(0) 编辑

2013年9月2日

python 零散记录(六) callable 函数参数 作用域 递归

摘要: callable()函数: 检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的。函数的参数变化,可变与不可变对象: 首先,数字 字符串 元组是不可变的,只能替换。 对以前的形参实参的理解适用于这些不可变对象。即形参实参互不影响。 但是对于可变对象如list dict,形参与实参就会互相影响。 如果想拿到一个副本从而不影响原变量,用列表分割:mylist[:]收集参数: func(a,*b): b接受除了第一个给a的余下参数,以元组形式储存 func(a,*b,**c): a接受完,剩下的给b,如果有x=xx这种形式的关键字参数则给c作用域... 阅读全文

posted @ 2013-09-02 22:17 李皮筋 阅读(1063) 评论(0) 推荐(0) 编辑

2013年8月29日

算法 python实现(三) 快速排序

摘要: 算法学起来真费劲啊,智商只够捉只鸡的。昨晚没看明白就没电了,过两天要考虑偷电了...今天看看快速排序,有一个博客写的很好,通俗生动形象,适合我这样的算法大白菜。推荐一下http://www.cnblogs.com/morewindows/category/314533.html里面的快排的形象比喻特别到位,我就借花献佛了。大体情况是这样的:1. 拿一个数作为基准数(我一般都是拿第一个数,就是a[0]),比这个数小的都放在他的左边,比这个数大的都放在他的右边。这样就分出来了两个小序列。2. 然后在分出来的两个小数列中再分别进行这样的操作,直到小序列只剩一个数。下面看看具体怎么做:这里有一堆数 a 阅读全文

posted @ 2013-08-29 21:14 李皮筋 阅读(390) 评论(0) 推荐(0) 编辑

2013年8月27日

算法 python实现(二) 冒泡排序

摘要: 首先说一下 冒泡排序 是怎么做的:总体的想法是,把小的轻的浮上前面去,把大的重的沉到后面去。这样设置两个指针,i j,1.i标识每一趟循环。这一趟的目的是把后面那些未排序的数列中最小的浮上前面去。2.j标识的就是一趟中,具体是怎么找到最小最轻的数的过程。j从末尾开始,逐个与自己前一个数比较大小,如果后面的数小于前面的数,就交换位置,让小的往前窜一个,否则就不动。然后j--,指向前一个,再比较相邻的数大小,直到 j 循环到i的位置,因为i之前的都是排序好的,不用在排了。3.一趟下来,整个数列中最小最轻的就浮到前面去了,然后i++,把i指向第二个位置,也就是要在剩下的数列中找到第二轻的数然后放着i 阅读全文

posted @ 2013-08-27 22:44 李皮筋 阅读(645) 评论(0) 推荐(0) 编辑

算法 python实现(一) 基本常识

摘要: 我算法和数据结构都不好,笨的一比。现在的目标是熟悉常见和经典算法,看本站两个大牛的博客,在这也推荐一下,特别好,除了算法其他的技术也很不错。Vamei :http://www.cnblogs.com/vamei/tag/%E7%AE%97%E6%B3%95/一线码农:http://www.cnblogs.com/huangxincheng/category/340146.html然后自己理解,再用python实现。每天学习一个算法并记录。排序和查找算法是最常见的算法问题了排序算法大体分为; 交换排序:冒泡排序 快速排序随学随写,持续更新。。。 阅读全文

posted @ 2013-08-27 22:10 李皮筋 阅读(266) 评论(0) 推荐(0) 编辑

python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

摘要: 用import关键字导入模块的几种方式:#python是自解释的,不必多说,代码本身就是人可读的import xxxfrom xxx import xxxfrom xxx import xx1,xx2,xx3from xxx import *import xxx as xxxfrom xxx import xxx as xxx序列解包赋值:x,y,z = 1,2,3 #右侧1,2,3实际是一个(1,2,3)的tuple,然后解包出来再分别赋值x,y = y,x #同理,交换赋值if和布尔:#True False 实际就是1 0 同样可拿来运算True + 1 == ... 阅读全文

posted @ 2013-08-27 00:00 李皮筋 阅读(475) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页

导航