Day 23 (06/20)匿名函数、递归

内置函数补充:

# print(divmod(73,23))
#
# total_count=73
# per_count=23
#
# res=divmod(total_count,per_count)
# if res[1] > 0:
# page_count=res[0]+1
#
# print(page_count)
#

#
# l=[‘a‘,‘b‘,‘c‘]
#
#
# for i in enumerate(l):
# print(i)
#
# dic={‘name‘:‘egon‘,‘age‘:18}
# for i in enumerate(dic):
# print(i)

# s=set({1,2,3})
# s.add(4)
#
# s.pop()
# print(s)

s=frozenset({1,2,3})

# print(globals() is locals())

# s1=‘hello123123‘
# s2=‘ hello123123‘
#
# print(hash(s1))
# print(hash(s2))

# print(type(1))
# print(isinstance(1,int))

# iter([1,2,3]) #[1,2,3].__iter__()

# print(max([1,2,3,4,5]))
# print(
# max(
# i for i in range(10)
# )
# )
#

# print(pow(3,2,2)) #3**2%2

# for i in range(0,5):
# print(i)

# for i in range(-5,0):
# print(i)

#
# for i in range(0,5,2): #0 2 4
# print(i)

# for i in range(5,0,-1): #0 2 4
# print(i)

# l=[‘a1‘,‘a2‘,‘a3‘,‘a4‘,‘a5‘,‘a6‘,‘a7‘,‘a8‘,‘a9‘]
# # print(l[2:5:2])
# # print(l[::2])
# print(l[::-1])

# l=[‘a1‘,‘a2‘,‘a3‘,‘a4‘,‘a5‘,‘a6‘,‘a7‘,‘a8‘,‘a9‘]
# l1=[3,5,1,2]
# print(list(reversed(l1)))
# print(l1)
# l1=list(reversed(l1))
#
# print(round(3.3456,3))

# l=[‘a1‘,‘a2‘,‘a3‘,‘a4‘,‘a5‘,‘a6‘,‘a7‘,‘a8‘,‘a9‘]
# # print(l[2:5:2])
#
# x=slice(2,5,2)
# print(l[x])
#
# l1=[1,2,3,4,5]
# print(l1[x])

# print(sum(i for i in range(101)))
# print(sum([1,2,3,4]))
# print(sum([‘a1‘,‘a2‘]))

# vars()

# s=‘hello‘
# l=[1,2,3]
#
# for i in zip(s,l):
# print(i)

#复习:
# name=‘alex‘
# name=‘egon‘
# res=‘SB‘ if name == ‘alex‘ else ‘shuai‘
# print(res)

# egg_list=[‘鸡蛋%s‘ %i for i in range(10)] #列表解析
# print(egg_list)
#
#
# egg_g=(‘鸡蛋%s‘ %i for i in range(10)) #列表解析
# print(egg_g)

# s=‘hello‘
# print([True for i in s if i == ‘e‘])

# moneys=[]
# with open(‘goods‘,encoding=‘utf-8‘) as f:
# for line in f:
# # print(line)
# l=line.split()
# price=float(l[1])
# count=int(l[2])
# moneys.append(price * count)
#
# print(moneys)
# print(sum(moneys))

# with open(‘goods‘,encoding=‘utf-8‘) as f:
# # l=[line.split() for line in f]
# # l1=[float(item[1])*int(item[2]) for item in l]
# # print(l1)
# l=[float(line.split()[1]) * int(line.split()[2]) for line in f]
# print(sum(l))

# with open(‘goods‘,encoding=‘utf-8‘) as f:

# # g=(float(line.split()[1]) * int(line.split()[2]) for line in f)
# # print(sum(g))
# print(sum(float(line.split()[1]) * int(line.split()[2]) for line in f))

# with open(‘goods‘,encoding=‘utf-8‘) as f:
# g=(float(line.split()[1]) * int(line.split()[2]) for line in f)
# print(sum(g))

# g=(float(line.split()[1]) * int(line.split()[2]) for line in open(‘goods‘,encoding=‘utf-8‘))
# print(sum(g))

#模拟数据库查询
# goods_info=[]
#
# with open(‘goods‘,encoding=‘utf-8‘) as f:
# for line in f:
# l=line.split()
# name=l[0]
# price=l[1]
# count=l[2]
# goods_info.append({‘name‘:name,‘price‘:price,‘count‘:count})
#
# print(goods_info)

# goods_info=[]

with open(‘goods‘,encoding=‘utf-8‘) as f:
# for line in f:
# l=line.split()
# goods_info.append({‘name‘:l[0],‘price‘:l[1],‘count‘:l[2]})
goods_info=[{‘name‘:line.split()[0],‘price‘:float(line.split()[1]),‘count‘:int(line.split()[2])} for line in f \
if float(line.split()[1]) > 3000]
print(goods_info)

匿名函数

# def func1(x):
# return x**2
# print(func1)

# func2=lambda x:x**2 #return print(‘hello‘)
# print(func2)
# print(func2(2))

# def func1(x):
# return x**2
#
# func1(2)
# del func1

# f=lambda x:x**2
# print(f(2))
#
# f1=lambda x,y:x+y
# print(f1(1,2))
#
# f2=lambda x:x>1
# print(f2(3))

salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
}

# max
# print(max(salaries))
# print(max(salaries.values()))

# res=zip(salaries.values(),salaries.keys())
# # for i in res:
# # print(i)
#
# print(max(res)[-1])

salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
}
# def func(x):
# return salaries[x]

# print(max(salaries,key=lambda x:salaries[x]))

# min
# zip

# map:映射
# l=[1,2,3,4]
# m=map(lambda x:x**2,l)
# print(list(m))

# names=[‘alex‘,‘wupeiqi‘,‘yuanhao‘]
# print(list(map(lambda item:item+‘_SB‘,names)))

#reduce:合并
from functools import reduce

# res=0
# for i in range(100):
# res+=1

# print(reduce(lambda x,y:x+y,range(100),100))

# filter:过滤
#
# names=[‘alex_sb‘,‘yuanhao_sb‘,‘wupeiqi_sb‘,‘egon‘]
# print(list(filter(lambda name:name.endswith(‘_sb‘),names)))

#sorted

l=[1,2,4,9,-1]
print(sorted(l)) #从小到大
print(sorted(l,reverse=True)) #从大到小

递归

‘‘‘
递归调用:
在调用一个函数的过程中,直接或者间接调用了该函数本身

‘‘‘

# def func():
# print(‘====>func‘)
# func()
#
# func()

# def foo():
# print(‘from foo‘)
# bar()
#
# def bar():
# print(‘from bar‘)
# foo()
#
# foo()

# age(1)=age(2)+2
# age(2)=age(3)+2
# age(3)=age(4)+2
# age(4)=age(5)+2
# age(5)=18
#
#
#
# age(n)=age(n+1)+2 #n<5
# age(n)=18 #n=5

# def age(n):
# if n == 5:
# return 18
# return age(n+1)+2
#
#
# print(age(1))

l=[1,[2,3,[4,5,[6,7,[8,9,[10,11,[12,13]]]]]]]
def func(l):
for i in l:
if isinstance(i,list):
func(i)
else:
print(i)

func(l)

时间: 2024-10-10 20:33:55

Day 23 (06/20)匿名函数、递归的相关文章

匿名函数 递归 推导式

三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd = input('cmd: ') print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字') a = 20 b = 30 res = a if a > b else b # 求大值 print(res) res = 'b为小值' if a >

Python开发基础 day10 内置函数 匿名函数 递归

匿名函数lambda 匿名函数:lambda  x,y:x+y 上述解释:x,y分别是函数的参数,x+y是函数的返回值 匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b). 因为lamdba在创建时不需要命名,所以叫匿名函数 等同于普通函数: 1 2 def test(x,y):     return x+y 匿名函数只是没有函数名,主要是配合内置函数使用 示例1: 1 2 3 4 5 6 7 8 9 10 #

【Python 生成器 匿名函数 递归 模块及包的导入 正则re】

一.生成器 1.定义 生成器(generator)是一个特殊的迭代器,它的实现更简单优雅,yield是生成器实现__next__()方法的关键.它作为生成器执行的暂停恢复点,可以对yield表达式进行赋值,也可以将yield表达式的值返回. 也就是说,yield是一个语法糖,内部实现支持了迭代器协议,同时yield内部是一个状态机,维护着挂起和继续的状态. yield的功能: 1.相当于为函数封装好__iter__和__next__ 2.return只能返回一次值,函数就终止了,而yield能返

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协程函数、递归、匿名函数与内置函数使用、模块与包

目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就

python_递归_协程函数(yield关键字)_匿名函数_模块

协程函数(yield) 协程函数:生成器:yield关键字的另一种用法 例:装饰器自动初始化函数(生成器函数)deco 1 yield的语句形式: yield 1 2 #yield的表达式形式: x=yield 3 4 5 6 #协程函数 7 8 def deco(func): 9 def wrapper(*args,**kwargs): 10 res=func(*args,**kwargs) 11 next(res) 12 return res 13 return wrapper 14 15

Python递归列出目录中文件脚本及其匿名函数

1.递归列出目录里的文件的脚本举例 列出目录中的文件可以通过下面方法:os.listdir() In [1]: import os In [4]: os.listdir('/root') Out[4]: ['.tcshrc', '.bash_history', '.bashrc', 'ENV', '.cache', '.config', '.cshrc', '.bash_logout', 'python', '.ssh', 'shell', '.bash_profile', '.ipython'

递归,匿名函数

递归 函数的嵌套调用:函数嵌套函数.函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数过程中,有直接间接调用了自身. def foo(): print('from foo') foo() foo() # 进入死循环 直接调用 import sys # 修改递归层数 sys.setrecursionlimit(10000) def foo(n): print('from foo',n) foo(n+1) foo(0) 间接调用 def bar(): print('from bar') f

在NewLisp中实现匿名函数的递归

匿名函数在很多语言中的表现形式大概如下: (lambda (n)   (* (+ n 1) (- n 1))) 只有参数列表和函数体,而没有名字.在大部分情况下没问题,但是一旦需要用到递归的话,就有点麻烦了,因为不知道如何去递归的调用一个匿名函数. 在学术界中有一些解决这个问题的办法,其中一个就是Y组合子,但是那个太繁琐,而且难以通过宏自动将一个lambda变成可递归形式,没什么好处. 根据历史经验,目前比较好的办法,就是实现一个操作符,匿名函数通过这个操作符来调用自身: (lambda (n)