博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十四天-内置函数
阅读量:4970 次
发布时间:2019-06-12

本文共 3206 字,大约阅读时间需要 10 分钟。

 

 

内置函数:

—————————————————

# 匿名函数 # 为了解决一些简单的需求⽽设计的一句话函数 不需要def来声明 一句话就可以声明一个函数 # 函数名 = lambda 参数: 返回值
1 # 例子 lambda 求和 求幂 2 a = lambda n : n**n  # 可用变量a来代替函数名 正常调用 3 r = a(3) 4 print(r) 5  6 b = lambda n,m : n+m 7 re = b(3,2) 8 print(re) 9 10 # 求序列长度11 long = lambda st : len(st)12 st = '156161ddd'  # st作为一个参数13 re = long(st)  # long调用st14 print(re)

注意:

  1. 函数的参数可有多个. 多个参数之间用逗号隔开

   2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据

  3. 返回值和正常的函数⼀样, 可以是任意数据类型

 

# sorted  排序函数. # 语法: sorted(Iterable, key=None, reverse=False)
1 # 可直接对序列使用 2 lis = [1,3,5,8,9,45,12,34] 3 lis2 = sorted(lis) 4 print(lis2) # 返回的新列表是经过排序的 5 dic = {1:'A', 3:'C', 2:'B'} 6 print(sorted(dic)) # 字典直接使用返回的是排序后的key 7  8 # 和函数组合使用 9 lis = ['张三','114561',"李四1",'4414','赵五22222'] # 按字符长短排序10 def func(s):11     return len(s)12 # 把列表中的每一个元素传递给func 根据func返回值进行排序13 s = sorted(lis,key=func)14 print(s)15 # 和lambda组合使用16 print(sorted(lis,key=lambda i:len(i)))17 18 # 按年龄排序19 lis = [{
'id':1,'name':'lx','age':28},20 {
'id':2,'name':'tab','age':58},21 {
'id':3,'name':'tah','age':18},22 {
'id':4,'name':'hei','age':38}]23 24 def age(s):25 return s['age']26 print(sorted(lis,key=age))27 # 组合lambda排序28 print(sorted(lis,key=lambda dic:dic['age']))

 

# filter 筛选函数 # 语法: filter(function. Iterable) # 把后面可迭代对象每一个元素交给前面的函数 根据函数返回的True 和 False进行筛选,判断是否保留该元素
1 lis = ['313','sdads','3333','sss','deefa'] # 筛选长度大于3的 2 re = list(filter(lambda s:len(s)>3,lis)) # 注意用list迭代装筛选出来的元素 3 print(re) 4  5 # 筛选>=38的 6 lis = [{
'id':1,'name':'lx','age':28}, 7 {
'id':2,'name':'tab','age':58}, 8 {
'id':3,'name':'tah','age':18}, 9 {
'id':4,'name':'hei','age':38}]10 11 print(list(filter(lambda dic:dic['age']>=38,lis))) 12 13 # 注意筛选完后用 list 可迭代装元素

 

# map 映射函数 # 语法: map(function, iterable) # 把后面可迭代对象每一个元素交给前面的函数 保留执行结果
1 lis = [1,2,3,4,5,6,8] # 返回每个元素平方2 re = map(lambda s:s**2,lis)3 print(list(re))4 5 # 给出一个列表 正确的用户名: alex 密码:456 选出正确的6 lis = ["alex_123", "alex_456", "wusir_123", "wusir_456", "alex_789"]7 print(list(map(lambda s:s=='alex_456',lis)))8 # 或者.split 分割成列表9 print(list(map(lambda s: s.split("_")[0] == 'alex' and s.split("_")[1] == "456",lis)))

 

# 递归 # 在函数中 调用函数本身就是递归
1 # def func(): 2 #     print("我是谁") 3 #     func() 4 # func()  # 会报错 5  6 # 递归的应用:可以使用递归来遍历各种树形结构,比如我们的文件夹系统.可以使用递归来遍历该文件夹中的所有文件 7  8 # 打开一个文件夹. 获取到文件夹内的所有文件名 9 # 1. 打开一个文件夹10 #.2. 判断这个文件是否是文件夹11 12 import  os13 def func(path):14     lis = os.listdir(path)  # 打开文件夹 列出文件夹所有内容(文件夹名)15     for el in lis: # 当前文件夹内所有的文件名16         file_real_path = os.path.join(path,el) # 拼接路径17         if os.path.isdir(file_real_path): # 判断是否文件夹18             print(el)19             func(file_real_path)  # 递归 重新执行上面的操作20         else: # 不是文件夹是文件21             print(el)22 23 func("e:/a"

 

# 二分查找 # 二分查找.每次能够排除掉一半的数据.查找的效率非常高.但是局限性较大.必须是有序序列才可以使用二分查找     # 要求:查找的序列必须是有序序列.
1 # 判断n是否在列表中 2 lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] 3 n = int(input("请输入一个数字")) 4 left = 0 5 right = len(lst)-1 6 while left <= right: 7     z = (left + right) // 2  # 整除 找到中间索引位置 8     if n < lst[z]: 9         right = z-110     elif n > lst[z]:11         left = z+112     else:13         print("找到了!")14         break15 else:16     print("没有")

 

 

 

转载于:https://www.cnblogs.com/xi1419/p/9898429.html

你可能感兴趣的文章
DOM事件处理
查看>>
从visio数据库脚本生成添加 MS_Description 的sql脚本
查看>>
课程总结
查看>>
[USACO09JAN] 气象测量/气象牛The Baric Bovine 解题报告(DP)
查看>>
MySQL执行带out的存储过程
查看>>
文件操作
查看>>
第一次Eclipse小插件开发记录(一):基本介绍
查看>>
C#修改上传文件的大小
查看>>
序列化和反序列化
查看>>
c#返回值的理解
查看>>
敏捷宣言
查看>>
valgrind 详细说明
查看>>
SqlServer扩展存储过程
查看>>
Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结
查看>>
新整理mongo3.2用户创建的基本使用
查看>>
IE6 fixed问题
查看>>
Dart Flutter
查看>>
[iOS开发]WKWebView加载JS
查看>>
冒泡、交换、选择排序
查看>>
Android 4.x 获取存储卡路径的方式
查看>>