-
map(),reduce()对list的每个元素反复调用函数f,并返回最终结果值:
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,map()传入的函数接收一个参数,reduce()传入的函数 f 必须接收两个参数。
查看全部 -
def format_name(s):
return s[0].upper()+s[1:].lower()
print map(format_name, ['adam', 'LISA', 'barT'])
查看全部 -
计算平方根可以用函数:
>>> math.sqrt(2) 1.4142...
查看全部 -
安装第三方模块的步骤
python的模块
内置了许多有用的模块
可以安装第三方模块
python提供的模块管理工具
-easy_install
-pip(推荐)
查看全部 -
使用__future__
python的新版本会引入新的功能,但是,实际上这些功能再上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
from__future__import division
当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性
查看全部 -
动态导入模块
如果导入的模块不存在,Python解释器会报 ImportError 错误。有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了StringIO这个功能。这是因为Python是动态语言,解释执行,因此Python代码运行速度慢。如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。
同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。利用ImportError错误,我们经常在Python中动态导入模块:
try:
from cStringI() import StringI()except importError:
from StringI() import String()
上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
import simplejson as json
json就是给simplejson起的别名
利用import...as...,还可以动态导入不同名称的模块
查看全部 -
Python2.x 的 sorted()函数如下:
1 sorted
(iterable,
cmp
=
None
, key
=
None
, reverse
=
False
)
不过sorted 在Python3.x 中发生了变化, 去掉了 cmp 参数。
这就开始解释 这个函数的参数:
iterable : 可迭代类型,就是我们传入的列表,另外这个函数时 原位置改变原列表的。
reverse: 默认为False , 就是正常排列(也就是按照 cmp, key 等参数提供的值去排列,如果没有这两个值就是默认排列),
当给reverse 传参 为True 的时候,也就是把正常排列结果翻转过来。 下面会举例说明
cmp: 该参数接受一个 函数作为参数值, 改函数需要返回 正数,负数,和零, 同时该函数需要接受2个参数,比较这两个 参数,选择返回值。同样下面有例子
key: 该参数是 选取比较的值, 或者说是 声明,用列表元素的什么特征来比较,下有例子说明。
参数解释完了,举例说明:
查看全部 -
在Python 3.x, 取消了 cmp 参数, 只保留了Key Function参数。正确代码如下:12L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]print (sorted(L, key=lambda student:(student.score,student.name)))#优先按照score,其次按照name
查看全部 -
sorted和__cmp__中的形参s
不懂__cmp__中s,并没有传入实参呀
sorted(),这个python内置方法需要调用形参有(列表,cmp)。如果该类里面没有__cmp__这方法,她就默认排序,如果有,就调用这个类的cmp方法,所以这里的s就是列表里除自己以外的Student这类的实例。
查看全部 -
导入模块
要使用一个模块,我们必须首先导入该模块。python使用Import语句导入一个模块。可以认为导入的math就是i一个指向已导入模块的变量,我们可以访问math模块中所定义的所有公开的函数、变量和类。
如果我们只希望导入用到math模块的某几个函数,而不是所有函数,可以用
from math import pow,sin,log
这样,可以直接引用pow,sin,log这3个函数,但是Math的其他函数没有导入进来 。
当遇到名字冲突的时候--不同模块中的有相同名字的函数
如果使用Import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突。
如果使用from...import导入函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突
from logging import log as logger
查看全部 -
可以用import 引用其他模块;用math.调用math模块的函数
可以将同名模块放入不同的包中来解决模块名字相同的情况
调用时要引用完整模块
在文件系统中,包就是文件夹,模块就是xxx.py文件,包可以有多级
如何区分包和普通目录:包下面有个_init_.py,每层都必须要有
查看全部 -
偏函数
当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。
int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换,但Int()函数还提供额外的base参数,默认值为10,如果传入base参数,就可以做N进制的转换。
假设要转换大量的二进制字符串,每次都传入int(x,base=2)非常麻烦,于是,可以定义一个Int(),默认把base=2传进去
def int2(x,base=2)
return int (x,base)
functools.partial就是用来创建一个偏函数的,不需要我们自己定义int2(),可以用下面代码创建新函数:
import functools
int2=functools.partial(int,base=2)
所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
查看全部 -
sorted()函数
sorted()函数可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
格式为:sorted(list,f),f传入两个参数进行比较。
查看全部 -
filter()函数
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
查看全部 -
reduce()函数
reduce()函数接收一个函数 f,一个list,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
reduce()还可以接收第3个可选参数,作为计算的初始值。
查看全部
举报