自定义函数的作用
• 为了定制化的需求
• 为了降低代码的重复编写
定义
匿名函数,可以用lambda关键字定义。通过lambda构造的函数可以没有名称,最大特点是“一气呵成”,即在自定义匿名函数时,所有代码可在一行内完成。
语法介绍
lambda parameters : function_expression
lambda为匿名函数的关键起始词
parameters是函数的形参,多个参数之间用英文状态的逗号隔开
function_expression为具体的函数体
# 统计列表中每个元素的频次 list6 = ['A','A','B','A','A','B','C','B','C','B','B','D','C'] # 构建空字典,用于频次统计数据的存储 dict3 = {} # 循环计算 for i in set(list6): dict3[i] = list6.count(i) print(dict3)
# 取出字典中的键值对 key_value = list(dict3.items()) print(key_value) # 列表排序 key_value.sort() print(key_value) # 按频次高低排序 key_value.sort(key = lambda x : x[1], reverse=True) print(key_value)
自定义函数
使用场景
虽然匿名函数很灵活,会在很多代码中遇到,但它的最大特点也是它的短板,即无法通过lambda函数构造一个多行而复杂的函数。为了弥补其缺陷,Python提供了另一个关键字def,可以构造逻辑复杂的自定义函数。
def function_name(parameters):
function_expression
return(result)
def是define单词的缩写,为自定义函数的关键词
function_name为自定义的函数名称
parameters为自定义函数的形参,需要放在圆括号内
function_expression为具体的函数体
return用于返回函数的计算结果
import random def guess_number(Min,Max): number=random.randint(Min,Max) while True: guess=int(input('请在{}和{}之间输入一个整数:'.format(Min,Max)))#input会将输入的数都以字符串形式传递给变量 if guess>number: print('偏大') Max=guess elif guess<number: print('偏小') else: print('正确!') break
#构造自定义函数,用于多数据源的读取与合并
1、初级阶段,适用于目录下文件命名非常规则的情况 import pandas as pd res=[] for i in range(1,4): data=pd.read_csv(r'D:\pylearn\datas{}.txt'.format(i)) res.append(data) res 返回结果,是列表 [ id name income 0 3 lucy 2000 1 4 guy 10000, id name income 0 1 tom 20000 1 2 jm 1000, id name income 0 5 shar 25000 1 6 kiit 28000]
pd.concat(res)#实现数据的合并
返回结果:
| id | name | income | |
|---|---|---|---|
| 0 | 3 | lucy | 2000 |
| 1 | 4 | guy | 10000 |
| 0 | 1 | tom | 20000 |
| 1 | 2 | jm | 1000 |
| 0 | 5 | shar | 25000 |
| 1 | 6 | kiit | 28000 |
2.进阶阶段,适用于目录下有非规则命名
import os#操作系统相关的包 os.listdir(r'D:\pylearn')#罗列出此目录下所有的文件 返回结果: ['datas1.txt', 'datas2.txt', 'datas3.txt'] import os#操作系统相关的包 path=r'D:\pylearn' filenames=os.listdir(path)#罗列出此目录下所有的文件 res=[] for file in filenames: data=pd.read_csv(path+'\\'+file) res.append(data) pd.concat(res) 返回结果:
| id | name | income | |
|---|---|---|---|
| 0 | 3 | lucy | 2000 |
| 1 | 4 | guy | 10000 |
| 0 | 1 | tom | 20000 |
| 1 | 2 | jm | 1000 |
| 0 | 5 | shar | 25000 |
| 1 | 6 | kiit | 28000 |
浙公网安备 33010602011771号