一些代码 I (斐波那契、for...else...、try和return、classmethod、统计个数)
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、统计个数)的更多相关文章
- 斐波那契堆(一)之 图文解析 和 C语言的实现
概要 本章介绍斐波那契堆.和以往一样,本文会先对斐波那契堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理如出一辙,选择其中之一进行了 ...
- 斐波那契堆(二)之 C++的实现
概要 上一章介绍了斐波那契堆的基本概念,并通过C语言实现了斐波那契堆.本章是斐波那契堆的C++实现. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的C++实现(完整源码)4. ...
- 斐波那契堆(三)之 Java的实现
概要 前面分别通过C和C++实现了斐波那契堆,本章给出斐波那契堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆 ...
- Python3 ——斐波那契数列(经典)
刚刚学习了 斐波那契数列,整理一下思路,写个博文给未来的学弟学妹参考一下,希望能够帮助到他们 永远爱你们的 ----新宝宝 经历过简单的学习之后,写出一个比较简单的代码,斐波那契数列:具体程序如下: ...
- fibonacci数列-斐波那契数列-python编程
未完待续~ 了解fibonacci数列: 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列. 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ...
- {每日一题}:四种方法实现打印feibo斐波那契数列
刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列 方法一:使用普通函数 def feibo(n): """ 打印斐波那契 ...
- 04斐波那契函数_Fibonacci--(栈与队列)
#include "stdio.h" int Fbi(int i) /* 斐波那契的递归函数 */ { ) ? : ; ) + Fbi(i - ); /* 这里Fbi就是函数自己, ...
- leepcode(斐波那契数列与float("inf")无穷大)解析
12.加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 ...
- Python 斐波那契数列
Fibonacci Sequence # fibonacci sequence 斐波那契数列 def fibonacci_for(n): # 使用for循环返回n位斐波那契数列列表 li = [] f ...
- python3 求斐波那契数列(Fibonacci sequence)
输出斐波那契数列的前多少个数. 利用函数 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan # ----斐波那契数列( ...
随机推荐
- 虚拟化之kvm与xen对比
xen XenServer is the leading open source virtualization platform, powered by the Xen Project hypervi ...
- 常用邮件 smtp pop
常用的邮箱服务器(SMTP.POP3)地址.端口 sina.com: POP3服务器地址:pop3.sina.com.cn(端口:110) SMTP服务器地址:smtp.sina.com.cn(端口 ...
- Android SingleTask与SingleInstance的区别
Android SingleTask与SingleInstance的区别 原文地址 现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c ...
- 关于mac mini组装普液晶显示器
申请了好久的mac mini,部门终于给买下来了.没想到,买回来之后的组装还是折腾了我们一把. 因为先前没用过mac mini,以为它和普通的台式机一样,买回来就能直接到显示器上用了.结果买回来ma ...
- 黄聪:wordpress如何扩展TinyMCE编辑器,添加自定义按钮及功能
在functions.php文件里面添加: add_action( 'admin_init', 'my_tinymce_button' ); function my_tinymce_button() ...
- (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 ...
- SOA_环境安装系列5_Oracle ADF安装SOA Extensions(案例)
2015-01-02 Created By BaoXinjian
- PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)
20150701 Created By BaoXinjian
- IREP_SOA Integration程序注释语法Annotations(概念)
20150506 Created By BaoXinjian
- PO_PO系列 - 安全文件管控管理分析(案例)
2014-07-01 Created By BaoXinjian