内置函数二
一:匿名函数 lambda函数
  lambda 表示匿名函数,不需要用def 来申明。
语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n
   例子01:
    计算n*n 的值:
f=lambda n:n*n
print(f(10)) 打印:100
   例子02:
     计算n的n次方
def func(n):
return n*n
print(func(2)) #打印:4
    匿名函数的注意事项:
    1:函数参数能-是多行,多个参数用逗号隔开
2:匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据
3:返回值和正常的函数一样,可以是任意数据类型
二:sorted 函数:
排序函数:
001:sorted
    sorted(Iterable,key=None,reverse=False)
Iterable: 可迭代对象
key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每⼀个元素传递给这个函
数的参数. 根据函数运算的结果进⾏排序
reverse: 是否是倒叙. True: 倒叙, False: 正序

  根据大小排序

    lst=[1,5,3,4,6]
lst2=sorted(lst)
print(lst) #[1, 5, 3, 4, 6]
print(lst2) #[1, 3, 4, 5, 6] 进过sorted函数后,返回了从小到大排序好的数

  例子:

    根据字符串长度进行排序,和函数组合使用  #revserse  Ture 则降序,反则升序
lst=["马虎疼","qwer","哎呦喂啊啊","旺财"]
def func(s):
return len(s)
print(sorted(lst,key=func)) #['旺财', '马虎疼', 'qwer', '哎呦喂啊啊']

  #计算字符串长度


   def func(s):
return len(s)
  print(sorted(lst,key=lambda s:len(s))) #['旺财', '马虎疼', 'qwer', '哎呦喂啊啊']
  lst1=[{"id":1,"name":"xuxiansheg","age":18},
  {"id":2,"name":"haha","age":12},
  {"id":3,"name":"enen","age":15}
 按照年龄排序:
  print(sorted(lst1,key=lambda n:n["age"]))
打印:[{'id': 2, 'name': 'haha', 'age': 12}, {'id': 3, 'name': 'enen', 'age': 15}, {'id': 1, 'name': 'xuxiansheg', 'age': 18}]
三: filter() 筛选函数:
语法:filter()    #filter只保留,返回为真的数据,过滤list的作用
filter() :用来筛选函数,在filter 中会自动把iterable中的元素
  传递给function 然后根据function返回的True 或则False 来判断是否保留此项数据
例子01:
lst=[1,2,3,4,5,6,7]
ll=filter(lambda x:x%2==0,lst) #筛选所有的偶数
print(ll) #<filter object at 0x00000063DE87DB38>
print(list(ll)) #[2, 4, 6] 例子02:
lst1=[{"id":1,"name":"xuxiansheg","age":18},
{"id":2,"name":"haha","age":12},
{"id":3,"name":"enen","age":15}
]
fl=filter(lambda e:e["age"]>12,lst1) #筛选
print(list(fl))
a=list(fl)
print(a)
# 打印:[{'id': 1, 'name': 'xuxiansheg', 'age': 18},
# {'id': 3, 'name': 'enen', 'age': 15}]
四: map()映射函数  #map是帮你循环调用函数,这个函数返回就保存什么。
  map语法:map(function,iterable) 可以对迭代对象中的每一个元素
映射分别取执行function
  

例子01:
# map 对每个元素进行映射(#############)
def func(e):
return e*e
mp=map(func,[1,2,3,4,5]) #对每个元素平方,返回新的列表
print(mp) #打印:<map object at 0x000000DFDD76D2B0>
print(list(mp)) #[1, 4, 9, 16, 25]
例子02:
改写成lambda: lambda 必须一行写出来,直接返回值
print(list(map(lambda x:x*x,[1,2,3,4,5])))
#打印:[1, 4, 9, 16, 25]
例子03:
#计算两个列表中相同位置的数据和
lst1=[1,2,3,4,5]
lst2=[2,4,6,8,10]
print(list(map(lambda x,y:x+y,lst1,lst2))) #[3, 6, 9, 12, 15]
例子04:
#map案例:
lst=["1_123", "alex_456", "wusir_123", "wusir_456", "alex_789"]
m=map(lambda s:s=="1_456",lst)
print(list(m))
def fun(s):
if s=="1_456":
return "登陆成功"

例子

五:在函数中调用函数本身,就是递归:################
def func():
print("我是谁!")
func()
func() #循环打印: 我是谁 #python中递归的深度最⼤到1000 但是永远到不了一千
def foo(n):
print(n)
n+=1
foo(n)
foo(1)

六:递归的应用(############重点)


 说明:# # 我们可以使⽤递归来遍历各种树形结构, 比如我们的⽂件夹系统. 可以使⽤递归来遍历该
# # ⽂件夹中的所有⽂件
  

例子:01

    import os
def func(path):
lst=os.listdir(path) #打开一个文件夹
print(lst)
for el in lst: #当前文件夹内的所有文件名。包括文件夹的名字
#拼接文件的真实路径
# file_real_path=os.path.join(path,el) #文件路径的固定写法 os.path.join(path,el)
q = os.path.join(path, el) # 文件路径的固定写法
#判断这个路径是文件夹还是文件
if os.path.isdir(q):
#递归的入口
print(el)
func(q) #重新执行刚才的操作,如果是文件则继续打开
else:#不是文件夹,是文件则返回文件名
print(el)
func("F:/1")

例子

#####################习题!
#计算1-3+5-7+9......99的结果
sum=0
fu=1
for i in range(1,100,2):
sum+=i*fu
fu=-fu
print(sum)
七:二分法(掐头去尾取中间)###最主要的是:二分法需要的是已经排序好的列表才行!
    二分法:第一种
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
left=0
right=len(lst)-1
num=int(input("请输入您需要判读的数字:")) while 1:
if left<=right: #左右索引可以相等
mid=(left+right)//2 ##每次的都是以中间值为分界的
if lst[mid]>num: ###说明我们要找的数字在中间值得左边
right=mid-1
elif lst[mid]<num: ### 说明我们呢要找的值在中间值得右边
left=left+1
else:
print("找到了!")
break else:
print("没找到!")
二分法:第二种
          0   1   2    3    4   5      6    7      8
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] def binary_search(lst, n, left, right):
if left > right:
return False
mid = (left + right) // 2
if n > lst[mid]:
left = mid + 1
#重点# 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值##############################
return binary_search(lst, n, left, right)
elif n < lst[mid]:
right = mid - 1
return binary_search(lst, n, left, right)
else:
print("找到了")
return True n = int(input("请输入一个数字n:")) #
ret = binary_search(lst, n, 0, len(lst)-1)
print(ret)
二分法:第三种
#切换列表,这种方法主要思想:以中间的数字为界限,如果要找的数字比中间数字大,则左边的数据切割掉不需要了,再以
#中间数字为起始位置开始切割,不断持续相同切割方法,最后找到我们要找的数据,反之亦然!主要改变的是列表的长度
def binary_search(lst, n):
if len(lst) == 0:
return False
left = 0
right = len(lst) - 1
mid = (left + right) // 2
if n > lst[mid]:
left = mid + 1
# 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值
return binary_search(lst[mid+1:], n)
elif n < lst[mid]:
right = mid - 1
return binary_search(lst[:mid], n)
else:
print("找到了")
return True n = int(input("请输入一个数字n:")) #
ret = binary_search(lst, n)
print(ret)
八:递归深度:
 # 递归深度
# def func():
# print("哈哈")
# func()
# func()
# python中最大的递归深度是3000 但是你永远到不了3000 实际测试说明:最大深度是1000,但是到不了1000
import sys # system python, os 操作系统
print(sys.getrecursionlimit())
sys.setrecursionlimit(3000) # 最大是3000 你到不了3000

												

python---day14( 内置函数二)的更多相关文章

  1. Python入门-内置函数二

    看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用 ...

  2. day14 内置函数二

    lamda 语法: 函数名 = lambda 参数: 返回值注意: 1. 函数的参数可以有多个. 多个参数之间⽤逗号隔开 2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据 3. 返回 ...

  3. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  4. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  5. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  6. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  7. Python的内置函数

    python的内置函数一共有68个,下面将简单介绍各个函数的功能. abs() dict() help() min() setattr() all() dir() hex() next() slice ...

  8. 如何查看Python的内置函数

    经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...

  9. python print()内置函数

    啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...

随机推荐

  1. zookeeper伪集群的搭建

    由于公司服务器数量的限制,我们往往没有那么多的服务器用来搭建zookeeper的集群,所以产生了伪集群的搭建,也就是将多个zookeeper搭建在同一台机器上. 准备工作: 1,一台服务器,我们这里用 ...

  2. 643. Maximum Average Subarray I 最大子数组的平均值

    [抄题]: Given an array consisting of n integers, find the contiguous subarray of given length k that h ...

  3. 25.AVG 函数

    定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SELECT AVG(column_name) FROM table_name SQL AVG() ...

  4. .net对Cookie的简单操作

    1 声明:HttpCookie MyCookie= new HttpCookie("test"); 2增加:MyCookie.Values.Add("key1" ...

  5. Mr_matcher的细节2

    1.参数服务器 ROS参数服务器能保存数据类型包括:strings, integers, floats, booleans, lists, dictionaries, iso8601 dates, a ...

  6. oracle数据库之数据插入、修改和删除

    作为一合格的测试人员对数据库的单表查询.多表查询.分组查询.子查询等等这些基本查询方法还是要会的.不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因 ...

  7. 浅析C语言中assert的用法(转)

    原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<ass ...

  8. iOS编程——Objective-C KVO/KVC机制[转]

    这两天在看和这个相关的的内容,全部推翻重写一个版本,这是公司内做技术分享的文档总结,对结构.条理做了更清晰的调整.先找了段代码,理解下,网上看到最多的一段的关于KVC的代码 先上代码 1.     1 ...

  9. 汉字转拼音类EcanConvertToCh

    /// <summary> /// 汉字转拼音类 /// </summary> public class EcanConvertToCh { //定义拼音区编码数组 priva ...

  10. Arduino I2C + DS1307实时时钟

    主要特性 DS1307是Maxim的串行.I2C实时时钟芯片.主要特性有: 工作电压:主电源电压4.5~5.5V,电池电压2.0~3.5V 功耗:电池供电.备份模式时<500nA 接口:I2C, ...