1. 斐波那契

from itertools import islice
def fib():
a, b = 0, 1
while True:
yield a
a, b = b, a+b print list(islice(fib(), 5)) # [0, 1, 1, 2, 3]

2. for……else……用法(以查找素数为例)

正常版本:

 def print_prime(n):
for i in xrange(2, n):
found = True
for j in xrange(2, i):
if i % j == 0:
found = False
break
if found:
print '%d is a prime number' %i

for……else……版本

 def print_prime(n):
for i in xrange(2, n):
for j in xrange(2, i):
if i % j == 0:
break
else:
print '%d is a prime number' % i

当循环‘自然’终结(循环条件为假)时,else从句会被执行一次,而当循环是由break语句中断时,else子句就不被执行。

与for语句相似,while语句中的else子句的语意是一样的:else块在循环正常结束和循环条件不成立时被执行。

try...except...else...finally...语句中,else在没有异常时被执行。

3. try和return

 def ReturnTest(a):
try:
if a <= 0:
raise ValueError('data can not be negative')
else:
return a
except ValueError as e:
print e
finally:
print 'the end'
return -1 print ReturnTest(0) # -1
print ReturnTest(2) #-1

ReturnTest(0)返回-1,不做解释。

ReturnTest(2)返回-1,是因为a>0,会执行else分值,但由于存在finally语句,在执行else语句的return a 语句之前会先执行finally中的语句,此时由于finally语句中有return,故程序直接返回了,所以永远不执行else语句中的return。

在实际应用程序开发过程中,并不推荐在finally中使用return语句进行返回。

4. @classmethod

 class Fruit(object):
total = 0 @classmethod
def print_total(cls):
print cls.total @classmethod
def set(cls, value):
cls.total = value class Apple(Fruit):
pass class Orange(Fruit):
pass Apple.set(200)
20 Apple.print_total() # 200 非classmethod不可这样调用,要先实例化 22
Orange.set(300)
Orange.print_total() #

普通继承是需要子类重构父类的方法。@classmethod被调用时隐形传入的参数为该对象所对应的类。

5. 统计个数

 from collections import Counter

 data = ['a', '', 2, 4, 5, '', 'b', 4, 7, 'a', 5, 'd', 'a', 'z']
print Counter(data)
# Counter({'a': 3, 4: 2, 5: 2, '2': 2, 2: 1, 'b': 1, 7: 1, 'z': 1, 'd': 1})

Counter主要用来统计散列对象,提供了3中不同的初始化方法:

 Counter('success')                         # 可迭代对象
Counter(s=3, c=2, e=1, u=1) # 关键字参数
Counter({'s':3, 'c':2, 'u':1, 'e':1}) # 字典

使用elements()方法来获取Counter中的key值

 list(Counter(data).elements())
# ['a', 'a', 'a', 2, 'b', 4, 4, 5, 5, 7, '2', '2', 'z', 'd']

使用most_common(N)方法找出前N个出现频率最高的元素以及他们对应的次数。

 Counter(data).most_common(2) # [('a', 3), (4, 2)]

当访问元素不在时,默认返回0,而不是抛出KeyError异常。

 (Counter(data))['y']    #

使用update()方法用于实现计数器对象总元素统计相加。

使用subtract()方法实现计数器对象中元素统计值相见,输入和输出的统计值允许为0或负数。

一些代码 I (斐波那契、for...else...、try和return、classmethod、统计个数)的更多相关文章

  1. 斐波那契堆(一)之 图文解析 和 C语言的实现

    概要 本章介绍斐波那契堆.和以往一样,本文会先对斐波那契堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理如出一辙,选择其中之一进行了 ...

  2. 斐波那契堆(二)之 C++的实现

    概要 上一章介绍了斐波那契堆的基本概念,并通过C语言实现了斐波那契堆.本章是斐波那契堆的C++实现. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的C++实现(完整源码)4.  ...

  3. 斐波那契堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了斐波那契堆,本章给出斐波那契堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆 ...

  4. Python3 ——斐波那契数列(经典)

    刚刚学习了 斐波那契数列,整理一下思路,写个博文给未来的学弟学妹参考一下,希望能够帮助到他们 永远爱你们的 ----新宝宝 经历过简单的学习之后,写出一个比较简单的代码,斐波那契数列:具体程序如下: ...

  5. fibonacci数列-斐波那契数列-python编程

    未完待续~ 了解fibonacci数列: 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列. 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ...

  6. {每日一题}:四种方法实现打印feibo斐波那契数列

    刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列 方法一:使用普通函数 def feibo(n): """ 打印斐波那契 ...

  7. 04斐波那契函数_Fibonacci--(栈与队列)

    #include "stdio.h" int Fbi(int i) /* 斐波那契的递归函数 */ { ) ? : ; ) + Fbi(i - ); /* 这里Fbi就是函数自己, ...

  8. leepcode(斐波那契数列与float("inf")无穷大)解析

    12.加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 ...

  9. Python 斐波那契数列

    Fibonacci Sequence # fibonacci sequence 斐波那契数列 def fibonacci_for(n): # 使用for循环返回n位斐波那契数列列表 li = [] f ...

  10. python3 求斐波那契数列(Fibonacci sequence)

    输出斐波那契数列的前多少个数. 利用函数 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan # ----斐波那契数列( ...

随机推荐

  1. 虚拟化之kvm与xen对比

    xen XenServer is the leading open source virtualization platform, powered by the Xen Project hypervi ...

  2. 常用邮件 smtp pop

    常用的邮箱服务器(SMTP.POP3)地址.端口  sina.com: POP3服务器地址:pop3.sina.com.cn(端口:110) SMTP服务器地址:smtp.sina.com.cn(端口 ...

  3. Android SingleTask与SingleInstance的区别

    Android SingleTask与SingleInstance的区别 原文地址 现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c ...

  4. 关于mac mini组装普液晶显示器

    申请了好久的mac mini,部门终于给买下来了.没想到,买回来之后的组装还是折腾了我们一把.  因为先前没用过mac mini,以为它和普通的台式机一样,买回来就能直接到显示器上用了.结果买回来ma ...

  5. 黄聪:wordpress如何扩展TinyMCE编辑器,添加自定义按钮及功能

    在functions.php文件里面添加: add_action( 'admin_init', 'my_tinymce_button' ); function my_tinymce_button() ...

  6. (C/C++) Interview in English. - Memory Allocation/Deallocation.

    Q: What is the difference between new/delete and malloc/free? A: Malloc/free do not know about const ...

  7. SOA_环境安装系列5_Oracle ADF安装SOA Extensions(案例)

    2015-01-02 Created By BaoXinjian

  8. PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)

    20150701 Created By BaoXinjian

  9. IREP_SOA Integration程序注释语法Annotations(概念)

    20150506 Created By BaoXinjian

  10. PO_PO系列 - 安全文件管控管理分析(案例)

    2014-07-01 Created By BaoXinjian