小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>>

1. lambda 匿名函数
lambda 参数: 返回值

注意:
1. 函数的参数可以有多个. 多个参数之间?逗号隔开
2. 匿名函数不管多复杂. 只能写??, 且逻辑结束后直接返回数据
3. 返回值和正常的函数?样, 可以是任意数据类型

# def fang(x):
#     return x**2
#
# # ret = fang(5)
# # print(ret)
#
# zrf = lambda x : x**2 # 匿名函数 lambda 参数: 返回值
#
# ret = zrf(10)
# print(ret)
#
# # 给函数传递两个参数a. b 返回a+b的结果
# a = lambda a, b: a+b
# print(a(188,35006))

  

  

2. sorted 排序
sorted(iterable, key=func, reverse=True/False)
执行流程:
把可迭代对象中的每一个元素拿出来, 放到func中运行. 返回一个数字. 根据数字进行排序

#
# lst = [1, 8, 18, 19, 97, 12, 3]
# # lst.sort() # lst自带的排序功能
# l2 = sorted(lst) # 排序功能
# print(l2)
#        0         2      2      2       0         2        2       2
lst = ["赵瑞鑫", "刘伟", "刘能", "赵四", "王大拿", "于谦",  "范伟", "沈腾"]

# def func(name):
#     return len(name) % 3 # 返回数字

l2 = sorted(lst, key=lambda name: len(name) % 3)
print(l2)

lst = [{"id": 1, "name": ‘alex‘, "age": 18},
    {"id": 2, "name": ‘wusir‘, "age": 16},
    {"id": 3, "name": ‘taibai‘, "age": 17}]
# 按照年龄对学?信息进?排序
# def func(dic):
#     return dic[‘age‘]
# l2 = sorted(lst, key=func) # 流程: 把可迭代对象的每一项传递给函数. 函数返回一个数字. 根据这个数字完成排序
# print(l2)
# l3 = sorted(lst, key=lambda dic: dic[‘age‘])
# l4 = sorted(lst, key=lambda dic: len(dic[‘name‘]))
# l4 = sorted(lst, key=lambda dic: ascii(dic[‘name‘][0]))  # ord()
# print(l4)

  

3. filter 筛选
filter(func, Iterable)
执行流程:
把可迭代对象中的每一个元素拿出来, 放到func中运行.返回True/False. 根据返回的True和False来决定这个数据是否保留

# lst = [23, 28, 15, 27, 24, 22]
# def func(age):
#     return age > 18 and age % 2 == 0
#
# f = filter(lambda age: age > 18 and age % 2 == 0, lst)
# # print(sorted(f))
# # f = filter(func, lst)
# # print(f)
# # print("__iter__" in dir(f))
#
# for el in f:
#     print(el)

# lst = [23, 28, 15, 27, 24, 22]
# f = filter(lambda age: age % 2 == 0, filter(lambda age: age > 18, lst))
# print(list(f))

# lst = [{"id":1, "name":‘alex‘, "age":18},
#  {"id":2, "name":‘wusir‘, "age":16},
#  {"id":3, "name":‘taibai‘, "age":17}]
#
# # 筛选出年龄大于等于17岁的人
# print(list(sorted(filter(lambda dic: dic[‘age‘] >= 17, lst), key=lambda dic: dic[‘age‘])))

  

4. map 映射
map(func, Iterable)
执行流程:
把可迭代对象中的每一个元素拿出来, 放到func中运行.返回数据就是结果

# lst = [1,5,9,3]
# # l1 = [i**2 for i in lst]
# m = map(lambda x: x**2, lst)
# print(list(m))

# 计算两个列表相同位置的数据的和
# lst1 = [1, 2, 3, 4, 5]
# lst2 = [2, 4, 6, 8, 10]
#
# print(list(map(lambda x, y: x + y , lst1, lst2)))

  

5. 递归(难点)
自己调用自己
递归的入口
递归的出口: return
递归的循环条件:动
循环树形结构:

# # 递归
# def func():
#     print("我叫李嘉诚")
#     func() # 递归的入口
#
# # 调用函数
# func()

# 用递归实现1-100
# import sys
# sys.setrecursionlimit(5000) # 设置递归的最大深度, 一般不要改.
#
# def func(index):
#     print(index)
#     func(index + 1)
#
# func(1) # 递归的深度: 1000 但是到不了1000, 997 - 998

# 遍历某文件夹内的所有文件和文件夹

import os
# 树形结构的遍历
def func(file_path, ceng):
    # 获取到路径下的所有文件
    lst = os.listdir(file_path) # 得到文件夹里的所有文件和文件夹
    for file in lst: # 文件名
        # 获取到文件的全路径
        full_path = os.path.join(file_path, file) # D:\python学院\s16\第一阶段\day01 认识python 变量 数据类型 条件if语句
        if os.path.isdir(full_path): # 判断这个路径是否是一个文件夹
            print("\t"*ceng, file)
            func(full_path, ceng+1)
        else:
            print("\t"*ceng, file)
    else:
        return
func("D:\python学院\s16\第一阶段", 0)

  

6. 二分法查找
核心思想: 掐头结尾取中间.
前提条件: 有序.

# 二分法查找的效率特别高.
# 缺点: 有序序列
#
# lst = [1,8,16,32,55,78,89,1,5,4,7,5,9,6,8,5,4,5,44,5,2,1,4,5,1]
# # [1, 1, 1, 1, 2, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 16, 32, 44, 55, 78, 89]
# lst = sorted(lst)
# n = int(input("请输入一个数:"))
# left = 0
# right = len(lst) - 1
#
# while left <= right: #
#
#     mid = (left + right) // 2  # 索引只能是整数
#     if n > lst[mid]:
#         left = mid + 1
#     elif n < lst[mid]:
#         right = mid - 1
#     else:
#         print("在这个列表中.所在的位置%s" % mid)
#         break
# else:
#     print("你要找的数. 不在这个序列中")

# 递归的第一套方案
# def func(n, lst):
#     left = 0
#     right = len(lst) - 1
#     if left <= right:
#         mid = (left + right)//2
#         if n > lst[mid]:
#             new_lst = lst[mid+1:]
#             return func(n, new_lst)
#         elif n < lst[mid]:
#             new_lst = lst[:mid]
#             return func(n, new_lst)
#         else:
#             print("刚刚好, 在这里出现了")
#             return True
#     else:
#         return False
#
# lst = [1, 1, 1, 1, 2, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 16, 32, 44, 55, 78, 89]
# ret = func(2, lst)
# print(ret)

# 第二套方案
def func(n, lst, left=0, right=None):
    if right == None:
        right = len(lst) - 1
    if left <= right:
        mid = (left + right) // 2
        if n > lst[mid]:
            left = mid + 1
        elif n < lst[mid]:
            right = mid - 1
        else:
            return True
        return func(n, lst, left, right)
    else:
        return False

lst = [1, 1, 1, 1, 2, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 16, 32, 44, 55, 78, 89]
ret = func(98, lst)
print(ret)

  

原文地址:https://www.cnblogs.com/konghui/p/9683049.html

时间: 2024-10-01 07:23:13

小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)的相关文章

Python内置函数之filter map reduce

Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车.1. filter函数的功能相当于过滤器.调用一个布尔函数bool_func来迭代遍历每个seq中的元素:返回一个使bool_seq返回值为true的元素的序列. >>>

python的高级函数- lambda,filter,map,reduce

第一: 匿名函数---lambda的理解 第二:  filter函数的理解 第三: map函数的理解 第四:reduce函数的理解 原文地址:https://www.cnblogs.com/ivyharding/p/12382330.html

小学生都能学会的python(小数据池)

1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 str: 1. 长度小于等于1,直接缓存 2. 长度大于1. 字符串中如果只有数字, 字母, 下划线. 就会缓存 3. 乘以1. 同上, 乘以大于1的数.仅包含数字,字母下划线.最终长度小于20会缓存 4. 使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中.默认的整数和字符串还有布尔值都会进行缓存. 如果涉

小学生都能学会的python(函数)

神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 return,只要执行到return 函数的本次调用就会被停止 1.如果函数不写return, 没有返回值. 接收到的是None 2.写了return. return后面什么都不写或者return后面的是None. 返回None 3.return 一个值. 返回一个结果 4.return 值,值,值 返回多个值.结果是元组 函数的参数(一部分)

小学生都能学会的python(文件操作)

1. open("文件路径", mode="模式", encoding="编码") 文件的路径: 1. 绝对路径: 1. 从磁盘根目录寻找 2. 网络上的路径 2. 相对路径 相对于当前你这个程序所在的文件夹.(用的最多的) 模式 r 读. 只读模式 w 写 只能写 f = open("d:/sylar.txt", mode="w", encoding="utf-8") f.write(

python基础——匿名函数及递归函数

python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x表示函数参数. 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. 2 匿名函数举例 用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突.此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数: >>> f = lam

Python之匿名函数

今天给大家介绍一下Python中的匿名函数. 匿名函数 由lambda关键字来定义 参数列表不需要小括号 冒号不是开启新的语句块的 只能写在一行上 没有return语句,最后一个表达式的值就是返回值 一个简单的例子: In [1]: lambda x: x+1 Out[1]: <function __main__.<lambda>> # 第一种用法 (lambda x: x + 1)(3) # 第一个括号用来改变优先级,第二对括号表示函数调用 In [2]: (lambda x:

python 之匿名函数

当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数lambda x: x * x实际上就是: def

python: lambda 匿名函数

lambda 匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数lambda x: x *