- filter()
1 | # Python高级内置函数 |
- map()
1 | # Python高级内置函数 |
- reduce()
1 | # Python3中reduce不是内置函数,使用时需要从functools中导入 |
- zip()
1 | # zip是python3中内置高级函数,表达式zip(it, ..., itN) |
归约函数
- all(it) :it中的所有元素都为真值时返回True,否则返回False,all([])返回True
- any(it) :只要it中有元素为真值就返回True,否则返回False,any([])返回False
- max(it, [key=,] [default=]) :返回it中值最大的元素,key是排序函数,与sorted函数一样;如果可迭代对象为空,返回default
- min(it, [key=,] [default=]) :返回it中值最小的元素,key是排序函数,与sorted函数一样;如果可迭代对象为空,返回default
- functiontools.reduce,如上述。
- sum(it, start=0):it中所有元素的综合,如果提供可选的start,会把它加上(计算浮点数的加法时,可以使用math.fsum函数提高精度)
iter()特殊用法:iter(obj, sentinel),传入两个参数,使用常规的函数或任何可调用的对象创建迭代器。其中obj必须是可调用的对象,用于不断调用(没有参数),产出各个值,比如range(3);sentinel是哨兵,是一个标记值,当可调用对象返回这个值时,触发迭代器抛出StopIteration异常,而不产出哨兵的值。
1
2
3
4
5
6
7
8
9
10# 实例1:
def d6():
return randint(1, 6) # 随机产生1-6
d6_iter = iter(d6, 3) # 返回一个迭代器
for i in d6_iter:
print(i) # 不断产生值,当产出的值为3的时候停止
# 实例2:逐行读取文件,直到遇到空行或者到达文件的末尾为止
with open("test.txt") as fp:
for line in iter(fp.readline, '\n'):
process_line(line)list.sort和sorted
list.sort会就地排序列表,即对原列表直接排序,不会把原列表复制一份,这个方法返回None
内置函数sorted会新建一个列表作为返回值,sorted可以接受任何形式的可迭代对象作为参数,甚至包括不可表序列或生成器。不管sorted接受什么样的参数,都会返回一个列表。
list.sort和sorted两个可选的关键字参数
reverse,如果被设定为True,则降序输出,默认为False
key,一个只有一个参数的函数,这个函数会作用在序列里的每一个元素上,所产出的结果作为排序算法依赖的关键字,默认是恒等函数,即默认使用元素自己的值进行排序
1
2
3list1 = ['banana', 'apple', 'pear']
list2 = sorted(list1, key=len) # 将会以元素的长度作为关键字进行排序
print(list2) # ['pear', 'apple', 'banana']