18.07.20(lambda().sorted().filter().map().递归.二分查找)

1.lambda() 匿名函数

lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明一个函数

语法:函数名 = lambda 参数:返回值

注意:

(1)参数可以有多个,多个参数用逗号隔开

(2)匿名函数不管多复杂.只写一行.且逻辑结束后直接返回数据

(3)返回值和正常函数一样1,可以是任意数据类型

我们通过__name__()查看函数名字

例:

a = lambda x : x * xprint(a(5))         ==>25print(a.__name__)   ==><lambda>

例:

a = lambda x,y : x * 2 + yprint(a(2,8))       ==>12

2.sorted 排序函数

语法:sorted(iterable,key=None,reverse=False) 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数的运算结果进行排序  reverse是否倒序

例:

lst = ["sdef","efg","c","sfrgrg"]l = sorted(lst,key= lambda s : len(s))print(l)      ==>[‘c‘, ‘efg‘, ‘sdef‘, ‘sfrgrg‘]

例:

lst = [{"name":"小花","age":6},       {"name":"jan","age":14},       {"name":"笨笨","age":4},       {"name":"曼曼","age":10}]ll = sorted(lst,key = lambda dic:dic["age"])print(ll)结果:[{‘name‘: ‘笨笨‘, ‘age‘: 4}, {‘name‘: ‘小花‘, ‘age‘: 6}, {‘name‘: ‘曼曼‘, ‘age‘: 10}, {‘name‘: ‘jan‘, ‘age‘: 14}]

3.filter筛选函数

语法:filter(function,iterable) function:用来筛选的函数,在filter中会自动把iterable中的元素传递给function,然后根据function返回的True或False来判断是否保留此项数据.iterable:可迭代对象

例:

def fn(i):    return i % 2 ==1lst = [1,2,3,4,5,6,7,8,9]ll = filter(fn ,lst)print(list(ll))    ==>[1, 3, 5, 7, 9]

例:

lst = [1,2,3,4,5,6,7,8,9]ll = filter(lambda i : i % 2 == 1 , lst)print(list(ll))    ==>[1, 3, 5, 7, 9]

例:

lst = [{"id":1,"name":"alex","age":18},       {"id":2,"name":"taibai","age":58},       {"id":3,"name":"wusir","age":38},       {"id":4,"name":"ritian","age":48},       {"id":5,"name":"女神","age":18},]ll = filter(lambda dic:dic["age"]<40 ,lst)print(list(ll))结果:[{‘id‘: 1, ‘name‘: ‘alex‘, ‘age‘: 18}, {‘id‘: 3, ‘name‘: ‘wusir‘, ‘age‘: 38}, {‘id‘: 5, ‘name‘: ‘女神‘, ‘age‘: 18}]

4.map映射函数

语法:map(function,iteration) 可以对可迭代对象中的每一个元素进行映射.分别执行function

例:

lst = [1,2,3,4,5]it = map(lambda i:i*i,lst)print(list(it))     ==>[1, 4, 9, 16, 25]

例:

lst1 = [1,2,3,4,5]lst2 = [6,7,8,9,10]print(list(map(lambda x,y:x+y,lst1, lst2)))   ==>[7, 9, 11, 13, 15]

5.递归

在函数中调用函数本身.就是递归

例:

def fn():    print("我是谁?")    fn()fn()      

在python中递归的深度最大到998

递归应用:遍历树形结构,例如系统中的文件夹系统

例:

import osfilePath = "F:\python作业"      #获取当前文件夹位置def fn(filePath,n):    it = os.listdir(filePath)      #打开文件夹    for el in it:                  #遍历文件夹中的文件夹        fg = os.path.join(filePath,el)  #加入文件夹 获取到绝对路径         if os.path.isdir(fg):         #判断该路径下文件是文件夹            print("\t"*n,el)            fn(fg,n+1)              #继续进行相同操作 递归入口        else:            print("\t"*n,el)        #递归出口fn(filePath,0)结果: .idea  inspectionProfiles  misc.xml  modules.xml  python作业.iml  workspace.xml 18.07.02  day1.py  day1作业及默写.pdf 18.07.03  day2.py  day2作业.pdf  作业.py

原文地址:https://www.cnblogs.com/gxj742/p/9342913.html

时间: 2024-10-05 01:31:56

18.07.20(lambda().sorted().filter().map().递归.二分查找)的相关文章

小学生都能学会的python(&lt;lamda匿名函数,sorted(),filter(),map(),递归函数&gt;)

小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间?逗号隔开2. 匿名函数不管多复杂. 只能写??, 且逻辑结束后直接返回数据3. 返回值和正常的函数?样, 可以是任意数据类型 # def fang(x): # return x**2 # # # ret = fang(5) # # print(ret

HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第一种是行交换操作,就是把矩阵的两行进行交换,另一种是列交换操作,注意两种操作都要求行或列至少要有一个水果,第三种操作是查找,询问第A行B列的水果的能量值,如果查询的位置没有水果,则输出0. 因为n和m都很大,达到了2*10^9,但水果最多一共只有10^5个,我的做法是直接用结构体存了之后排序,然后m

冒泡排序,递归二分查找法,二分查找法

#冒泡排序list1=[2,4,5,6,7,8,9,11,30,35,38,41,42] def bubble_sort(list): for i in range(len(list)-1): for j in range(len(list)-1-i): if list[j]>list[j+1]: list[j],list[j+1]=list[j+1],list[j] print(list) list1=[2,4,55,6,78,38,95,11,30,35,38,41,42] bubble_s

算法前戏 递归 二分查找 列表查找

一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略时,必须有一个明显的结束条件,称为递归出口.问题规模相比上次递归有所减少, ③递归算法解题通常显得很简洁,但递归算法解题的效率较低.所以一般不倡导使用递归算法设计程序. ④在递归调用的过程当中系统的每一层的返回点.局部变量等开辟了栈来存储.递归函数次数过多容易造成栈溢出等. 所以一般不倡导用递归算法

leetcode_81——Search in Rotated Sorted Array II(二分查找)

Search in Rotated Sorted Array II Total Accepted: 38274 Total Submissions: 121824My Submissions Question Solution Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and w

用递归要小心---以递归二分查找为例

昨天面试的时候被问了好多问题,今天再做,有些部分竟然连起来了:二分查找.递归.局部变量静态变量(静态局部变量),可能还有更多,待我慢慢总结.. OK进入正题. 一. 首先 写个二分查找的函数.因为之前只是了解过这个算法,实际自己写还没写过,想了想,如果不用递归,一时没啥思路,那就用递归吧 // This is v0.1 and there may be errors. #include <stdio.h> int binary_search(int a[], int left, int rig

找数字(递归,二分查找)

题目:在一从大到小排序的序列中用递归找一个数在不在这序列,在输出yes,不在输出no 这题用了二分查找的递归实现 思路: 把数组和变量都变成全局变量方便递归函数修改 然后如果不可能就跳出循环 如果可能但现在没找到就缩小范围进入下一个递归过程 如果找到了就输出 代码: #include<bits/stdc++.h> using namespace std; int a[1000]; int n,key; int finder(int l,int r)//左和右 { if(l>r) { co

HDOJ2141(map在二分查找中的应用)

#include<iostream> #include<cstdio> #include<map> #include<algorithm> using namespace std ; #define M 500 + 10 int a[M] ; int b[M] ; int c[M] ; int d[M] ; int l ; int n ; int m ; map <int , bool > Map ; void Marge() { for(int

递归二分查找

def find(list,num): length = int(len(list) / 2) #取列表长度中间值 if length > 0: list_left = list[:length] list_right = list[length:] if num > list_left[-1]: print('num肯定在右半边的列表里') list = list_right print(list) return find(list,num) elif num < list_right