python学习笔记
地板除: // 除法不管操作数何种数值类型,总是舍去小数部分,返回数字序列中比真正的商小的最接近的数字。
>>> 1//2 0 >>> 1.0//2.0 0.0 >>> -1//-1 1 >>> -1//1 -1
divmod函数把除法和区域运算结合起来,返回一个包含商和余数的元组。对整数来说, 它的返回值就是地板除和取余操作的结果。对浮点数来说,返回的商部分是math.floor(num1/num2)。
>>> divmod(10,3) (3, 1) >>> divmod(3,10) (0, 3) >>> divmod(10,2.5) (4.0, 0.0) >>> divmod(2.5,10) (0.0, 2.5)
函数 int()直接截去小数部分。(返回值为整数)
函数 floor()得到最接近原数但小于原数的整数。(返回值为浮点数)
函数 round()得到最接近原数的整数。(返回值为浮点数)
提供了两个内建函数来返回字符串表示的8进制和16进制整数。它们分别是oct()和 hex()。它们都接受一个整数(任意进制的)对象,并返回一个对应值的字符串对象。
>>> oct(1) '01' >>> hex(1) '0x1' >>> hex(8) '0x8' >>> oct(8) '010'
将多个变量同时赋值的方法称为序列解包(sequence unpacking)。因为采用这种方式赋值时,等号两边的对象都是元组。
x,y,z = 1,2,"hello world" print x,y,z #1 2 hello world y,x = x,y print x,y #2 1
Python的多元赋值方式可以实现无需中间变量交换两个变量的值。
斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题
https://github.com/lihuafeng/python/blob/master/demo1.py
Python中,可以在 while 和 for 循环中使用 else 语句。在循环中使用时, else子句只在循环完成后执行, 也就是说 break 语句也会跳过 else 块。 以寻找最大约数为例, 代码如下:
def showMaxFactor(num): count = num / 2 while count > 1: if num % count == 0: print 'largest factor of %d is %d' % (num,count) break count -= 1 else: print num,"is prime"
同样地,for 循环也可以有 else 用于循环后处理。 它和while 循环中的else 处理方式相同。 只要for 循环是正常结束的(不是通过 break ), else 子句就会执行。
格式:
- iter(obj)
- iter(func, sentinel)
- 如果传递一个参数给 iter() ,它会检查你传递的是不是一个序列,如果是,那么很简单:根据索引从 0 一直迭代到序列结束。另一个创建迭代器的方法是使用类:一个实现了__iter__() 和 next() 方法的类可以作为迭代器使用。
- 如果是传递两个参数给iter() ,它会重复地调用 func ,直到迭代器的下个值等于sentinel。
def fun(): return 2 if __name__ == "__main__": item= iter(fun,2) for i in item: print i #当fun return 2,没有输出。当fun return 1,输出1,死循环
reversed() 内建函数将返回一个反序访问的迭代器。enumerate() 内建函数同样也返回迭代器。另外两个新的内建函数any() 和 all(),在 Python 2.5 中新增,如果迭代器中某个/所有条目的值都为布尔真时,则它们返回值为真。