python高级特性

1.第归

     如果函数包含了对其自身的调用,该函数就是递归的,如果一个新的调用能在相同过程中较早的调用结束之前开始,那么该过程就是递归的.

        如阶乘函数的递归为:

def factorial(n):
  if n == 0 or n == 1:
    return 1
  else:
    return (n*factorial(n-1))

eg:求10阶乘


        注意: (1)在写第归函数时要有一个明确的结束条件;
                  (2)在第归时,问题规模要越来越小;
                  (3)第归函数效率不高,函数调用时通过栈的数据结构实现的;
                  (4)每调用一次,栈就会多加一层,最多999层,否则会出现栈溢出;

    二分法的递归为:

def factroial(n):
  m = int(n/2)
  if m>0:
    return factorial(m)
eg:

2.迭代器和 iter() 函数

        迭代器就是有一个 next() 方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下一个项时, 调用迭代器的 next() 方法就可以获得它. 条目全部取出后, 会引发一个 StopIteration 异常, 这并不表示错误发生, 只是告诉外部调用者, 迭代完成.迭代器也有一些限制. 例如你不能向后移动, 不能回到开始, 也不能复制一个迭代器.如果你要再次(或者是同时)迭代同个对象, 你只能去创建另一个迭代器对象.

(1)迭代 Python 的序列对象:

(2)迭代 Python 的字典对象:字典的迭代器默认会遍历它的键(keys).


(3)通过 collections 模块的 Iterable 类型判断一个对象是可迭代对象:

>>> from collections import Iterable 
>>> isinstance(obj,Iterable)

eg:

>>> from collections import Iterable
>>> isinstance('abc',Iterable)
True
>>> isinstance([123,'abc','xyz'],Iterable)
True
>>> isinstance((123,'abc','xyz'),Iterable)
True
>>> isinstance({'name':'bai','age':18},Iterable)
True
>>> isinstance(1,Iterable)
False
>>> isinstance('a',Iterable)
True
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值