先来对比一下
filter、map、sorted、reduce
map(func, iterable) 返回返回值组成的迭代器
filter(func, iterable) 返回符合条件的元素组成的迭代器
sorted(seq, key) 返回排序后的列表
reduce(function, iterable[, initializer]) 返回一个计算结果
额外来一个functools模块中的reduce函数
reduce(function, iterable[, initializer])
对参数序列中的元素进行累积
function接收两个参数,先对iterable的前两个元素进行处理,返回值当做下一次处理的第一个参数,与iterable的第三个元素作为第二个参数一同传给function,以此类推
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) # 等价于这个算式((((1+2)+3)+4)+5).
ps.initializer参数会排在iterable的元素之前进入计算,并且,当iterable为空时,作为默认值返回出去;若不提供初始化参数,且iterable只有一个元素,那么reduce会返回这个唯一元素
abs(digit)
返回数字的绝对值,参数可以是整数、浮点数、复数。
all(iterable)
判断容器内的元素是不是都为真,都真则返回真
any(iterable)
判断容器内是不是至少有一个真,有则返回真
ascii(obj)
参数如果在ascii范围内,则返回表示对象的字符串,否则,调用repr() 函数返回对象的16进制形式。
bin(int)
返回一个整型的二进制表示
bool(obj)
类型转换,可用来判断参数的真假,空参数会返回False
bytearray()
返回一个字节数组,返回值可索引切片,索引切片会得到对应的ascii码
bytes(source[, encoding[, errors]]])
返回一个新的bytes对象,是一个 0 <= x < 256 区间内的整数不可变序列
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
callable(obj)
检测对象是否可调用,可则返回真
对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。
但返回True,对象并不一定能被成功调用,返回False,对象一定不能被调用。
chr(integer)
参数可以使十进制或十六进制,返回参数ascii号码对应的字符
ps.65-A,90-Z,97-a,122-z
classmethod()
略
compile()
略
complex()
复数
delattr()
dict()
可创建字典对象
dir(obj)
不传参的话,返回当前命名空间内的名字列表。
查看对象支持的方法
divmod(digit1,digit2)
返回一个元祖,第一个元素是商,第二个是余数
参数为整型时,函数等价于(a // b, a % b)。
enumerate(iterable, start=0)
返回一个枚举对象,第二个参数可指定计数器的开始位置
内部的__next__()返回元祖,第一个元素是计数器,第二个元素是迭代对象内的元素。
for i,em in enumerate([1,2,3], 1): print(i,em) # 输出 # 1 1 # 2 2 # 3 3 # 枚举函数等价于以下实现: def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
eval(expression, globals=None, locals=None)
执行字符串内的简单语句,避免使用这个方法
>>> x = 1
>>> eval('x+1')
2
exec()
代码注入,升级版eval
filter(function, iterable)
返回一个迭代器,元素是参数iterable中被参数function返回True的元素。
若函数是空的,则会迭代第二个参数中所有逻辑为真的元素
filter(function, iterable) # 等价于以下的生成器推导式 (item for item in iterable if function(item)) # function是None时 (item for item in iterable if item)
float()
浮点型
format()
格式化输出,第二个参数可设置格式
frozenset()
冻结集合
getattr()
返回对象的属性
globals()
返回当前空间内的全局对象
hasattr()
hash(obj)
返回不可变对象的哈希值,哈希值本身是整形数据,
help([obj])
内建的帮助系统
hex(decimal)
把十进制转化成十六进制,以字符串形式表示
id(obj)
返回对象的内存地址
input()
int(x, base=10)
返回整型,默认转为十进制
isinstance(obj, classinfo)
判断一个对象是否是一个已知的类型
issubclass()
iter(obj[, sentinel])
返回迭代器
1.如果没给出第二个参数,那么obj必须符合迭代器协议或序列协议(包含__iter__()方法和__getitem()方法);
2.如果给出第二个参数,那么obj必须是一个可调用对象,并且,会在迭代到obj的返回值与第二个参数相等时,抛出StopIteration。
如下,可用于想读取文件到确定的某一行的情况
# 迭代器会自动调用readline方法,并把返回值与'读到这里'进行对比 with open('data') as file: for line in iter(file.readline, '读到这里') process_line(line)
len()
返回对象的长度
list()
locals()
map(function,iterable,...)
返回迭代器,用function迭代处理iterable的每一个元素,生成结果并返回
max(iterable, *[,key, default])
可以通过提供default参数,当iterable为空时,max返回默认值,避免报错。
max(arg1, arg2, *args[, key])
参数接收一个可迭代对象或两个以上的参数
memoryview()
min()
next(iterator[, default])
可提供default参数,当迭代器exhausted时,返回默认值,避免StopIteration的异常
object()
oct(x)
转换成八进制,返回八进制的字符串数据,以Oo填充空位,
open()
打开文件
ord(c)
返回ascii码,是chr()的逆操作。
pow(x, y[, z])
幂函数
pow(x, y)等价于x**y
pow(x, y, z)效果等于pow(x, y) % z,但比后者计算效率高
print()
可通过file参数直接打印到文件
property()
range()
repr(obj)
返回表示对象的str,将对象转化为供解释器读取的形式,也称全精度数据。
reversed(seq)
翻转,返回翻转后的对应迭代器。参数seq必须是支持__reversed__()的对象,或遵循序列协议(包含__len__()方法和__getitem__()方法)
round(number[, ndigits])
四舍五入,倾向于返回偶数,例如1.5-->2,-0.5-->0
可指定要保留的小数点后的位数
set([iterable])
setattr()
slice([start,] stop[, step])
返回切片类型的对象,可用于切片操作函数里的参数传递。作用是存储一种切片方式,可以直接写在下标操作符里。
sorted(iterable, * , key=None, reverse=False)
返回由排序后的iterable的元素组成的新列表。
key接收一个单参数的函数,该函数接收来自于iterable的元素作为参数。
key用于指定排序依据,主要用于以下应用场景
lis = [('d', 4), ('p', 2), ('m', 1), ('l', 3)] print(sorted(lis, lambda x:x[1])) # 输出结果:[('m', 1), ('p', 2), ('l', 3), ('d', 4)]
ps.内建函数sorted()是稳定的,当一个排序可以保证不会改变相等元素的相对位置时被称为是稳定的。这个特点在多因素排序当中很有用。
staticmethod()
str(object=b'', encoding='utf-8', errors='strict')
sum(iterable[, start])
默认从第一个元素开始累加
ps.处理浮点数,推荐使用math模块中的math.fsum()方法
super()
用于调用父类(超类)的一个方法
tuple([iterable])
type()
vars([obj])
返回对象的__dict__属性
空参数时,vars()类似于locals()
zip(*iterables)
拉链
返回一个元祖的迭代器,元祖的元素来自于zip的参数中可迭代对象的相同位置,元祖个数为参数中元素数最少的对象的元素数
>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
__import__()
__import__() 函数用于动态加载类和函数 。
如果一个模块经常变化就可以使用 __import__() 来动态载入。