python数据分析-学习之路(二)

常用内置函数

为了编程的高效和代码的简洁,我们常常会使用一些内置函数。这些函数可以帮助我们减少繁琐的自定义函数、循环、判断等硬编码操作,让代码看起来更简洁舒适,运行效率更高,有牛批克拉斯的感觉。
太过基础的python语法不再赘述,直接操练起来。

在学习内置函数之前,先来看一个表达式—— lambda。实际上就是定义一个匿名函数

  • 首先定义一个常规的函数
# 实现一个简单的线性方程
def linear_equation(x,y,k,b):
	return k*x+y+b
result = linear_equation(1,3,1,4)
print(result)    # 8
  • 接下来用表达式lambda实现上面的函数
# 通过表达式lambda实现以上函数
linear_equation = lambda x,y,k=1,b=4:k*x+y+b
print(linear_equation)    # <function <lambda> at 0x000001F98E39CE50>    看到了吧,结果是一个函数
print(linear_equation())  # 8   既然是函数,就要有调用函数的样子,想要的结果就出现了。
# 稍微加点料
linear_equation = lambda x,y,k=1,b=4:0 if k==0 else k*x+y+b
print(linear_equation(1,3,0))  # 0
print(linear_equation(1,3,2))  # 9

再啰嗦一点,lambda表达式冒号前的x,y,k,b就是函数的形参,形参可以有默认值,冒号后的是一个函数体(表达式),函数体太复杂就不适用了。

一、函数 map()

作用:根据提供的函数对指定序列做映射。语法:map(function, iterable, …)
可以看到map函数的第一个参数是函数,之后的参数是可迭代的对象。既然第一个参数是函数,那刚才的lambda正好返回一个函数,逼格再次提升。

# 结合lambda实现map,还是用上面的线性方程作为表达式
result = map(lambda x,y,k=1,b=4:k*x+y+b,[1],[3],[2],[4])  # 注意,我改了斜率
print(result)         # <map object at 0x00000292D5C57F70>  结果是个对象
print(list(result))   # [9]

需要注意的是,这个函数返回一个迭代器,什么时机使用list()很关键

result = map(lambda x,y,k=1,b=4:k*x+y+b,[1],[3],[2],[4])
for i in list(result):
	print(i,end=' ')    # 9
print(list(result))     # []    这里返回就是空列表,不是我忘写了

# 对比一下
result = list(map(lambda x,y,k=1,b=4:k*x+y+b,[1],[3],[2],[4]))
for i in result:
	print(i,end=' '# 9
print(result)           # [9]

二、函数 reduce()

作用:对序列中的元素,按照表达式操作。语法:reduce(function, iterable[, initializer])
第一个参数是一个函数(函数只能有两个参数),第二个参数是一个序列(可迭代的对象)。

from functools import reduce   # python3将这个函数放到了functiontools里边了
# 实现一个单行矩阵元素求和
result = reduce(lambda x,y:x+y,[2,3,4])
print(result)       # 9     ---> 2+3+4

# 实现一个单行矩阵元素求幂
result = reduce(lambda x,y:x**y,[2,0,4])
print(result)       # 1     ---> 2^1^4

三、函数 filter()

作用:过滤序列中不符合条件的元素。语法:filter(function, iterable)
第一个参数是函数(用于制定过滤规则),第二个参数是一个序列(可迭代的对象)。

result = filter(lambda x:200%x==0 if x>0 else 0,[1,2,3,50,0,3,6])
print(result)        # <filter object at 0x0000020C54EE7FA0>
print(list(result))  # [1, 2, 50]

四、函数 sorted()

作用:对任何可迭代的对象进行排序。语法:sorted(iterable, key=None, reverse=False)
通过以下栗子来看每个参数的作用:

# 先看第一个必传参数
result = sorted([2,3,1,5,7,5,85,23,6])
print(result)  # [1, 2, 3, 5, 5, 6, 7, 23, 85]    默认升序排列

# 加个reverse参数
result = sorted([2,3,1,5,7,5,85,23,6],reverse=True)
print(result)  # [85, 23, 7, 6, 5, 5, 3, 2, 1]   降序排列

# key这个参数是一个匿名函数,在对元素排序前进行处理。如:将字符串转成整数后排序
data = ['6','8','4','9','2','3']
result = sorted(data,key=lambda x:[int(i) for i in x])
print(result)  # ['2', '3', '4', '6', '8', '9']   注意这里返回的是原列表排序后的元素,不要理解为转成整数后的排序列表

记录点滴

1、函数 cmp(x,y),用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值