内建方法 我查看了文档一共有二千多个,这么多 你根本也记不住,但是常用的要熟悉,能提高我们的工作效率 。
range()
这个函数估计很多人都用过,比如我们想把 0到10 的偶数放到list里面
常用的方法是
a=[]
for i in range(11):if i%2==0:a.append(i)
print(a)# 打印结果
[0, 2, 4, 6, 8, 10]
我们也可以用列表生成式
这么实现:
a=[i for i in range(11) if i%2==0]
print(a)
#打印结果
[0, 2, 4, 6, 8, 10]
利用range 最简单的是这样的
a=list(range(0,11,2))
# 0 代表 起始位置, 11代表终止为止, 2 代表步长。
# 系统默认 0 为起始位置 ,步长是1
print(a)
这代码简洁吧, 面试的时候能这样写,说明是高手, 能装逼了。
map 函数
记住 map 返回的是一个迭代器(可以用next 取值 ) ,range 返回的不是迭代器 。
传递一个参数
有一个list a=[1,2,3], 让list 的值都乘积 , 如果不用map 应该这么做
a=[1,2,3]
b=[]for i in a:b.append(i*i)
print (b)
但是 map 函数一行就行了 。
a=[1,2,3]
a=list(map(lambda x:x*x,a)) # lambda 是匿名函数 ,
执行过程为 : 从a 里取出一个值,然后传递给 x, 并返回 x*x 的值 放到迭代器,然后list 转化为列表。
自己也可以用列表生成式, 自己尝试下 。
传递两个参数
a=[2,4,6]b=[8,10,12]c=list(map(lambda x,y:x+y,a,b)) # x 的值从 a种取, y从b 中取
print(c)
我们都是用 匿名函数 演示, 同样我们可以用自定义的函数
如下:
a=[2,4,6]b=[8,10,12]def test(x,y):return x+y
c=list(map(test,a,b))
print(c)
同样也可以达到我们的效果。
filter 函数
这个函数的意思 会对每个元素调用方法, 当满足true 条件 返回,返回类型是的迭代器
例如:
a=[2,4,6,7]b=[8,10,12]print(next(filter(lambda x:x>4,a))) # 可以用next 取值 ,说明是迭代器
c=list(filter(lambda x:x>4,a)) # x 取a 中的值 , 参数进行funciton 判断 x>4, 如果是true 就返回,
print(c)
打印结果:
6
[6, 7]
reduce 函数
reduce 的主要用途是计算累加和 ,看下代码:
如果用平常的方法为:
from functools import reduce
a=0
for i in range(101):a=a+i
print(a)
使用reduce
b=reduce(lambda x,y:x+y,range(101))
print(b)
解析过程为;
- 首先 list 中第一位 0 ,传递给x, 第二位 1 传递给 y ,
- 求和 x+y =0+1 =1,
- 让1 作为x 的值继续传递 , 然后取 2 为y
- 然后继续求和 2+1=3, 然后作为 x值, 依次循环 得出 总和
sort 和sorted 函数
这个两个都是 排序用的, 如果想倒序就需要加 reverse
>>> a=[2,4,1,9,5]
>>> a.sort()
>>> a
[1, 2, 4, 5, 9]
>>> a.sort(reverse=True)
>>> a
[9, 5, 4, 2, 1]
>>> sorted(a)
[1, 2, 4, 5, 9]
>>> sorted(a,reverse=1)
[9, 5, 4, 2, 1]
>>> a.reverse()
>>> a
[1, 2, 4, 5, 9]
>>>
同样字母也能实现排序。自己尝试下