zoukankan      html  css  js  c++  java
  • 第十四天-内置函数

    内置函数:

    传送门

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

    # 匿名函数
    # 为了解决一些简单的需求⽽设计的一句话函数 不需要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调用st
    14 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  os
    13 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-1
    10     elif n > lst[z]:
    11         left = z+1
    12     else:
    13         print("找到了!")
    14         break
    15 else:
    16     print("没有")




  • 相关阅读:
    【Java基础】for循环
    【java基础】for循环一些小例子
    ELK日志搜索引擎
    Spring boot 环境搭建
    【java基础】三元运算符&语句结构
    【接口自动化】正则表达式
    mysql 数据库表的基本操作
    centos下安装jenkins
    问题 H: 例题5-8 Fibonacci数列
    数字特征值
  • 原文地址:https://www.cnblogs.com/xi1419/p/9898429.html
Copyright © 2011-2022 走看看