python基础之推导式及匿名函数和高阶函数

推导式

推导式:做一些有规律的数据结构

列表推导式:

1.普通循环

print([i for i in range(1,51)])
[加工后的变量 for 循环]
print([f "学习python{i}天" for i in range(1,51))

2.筛选模式

print([i for i in range(1,51) if i > 25])
print([i+j for i in range(2) for j in range(2)])
字典推导式

1.普通循环

{键:值 for 循环}
print({i:i+1 for i in range(3) if i > 1})
print(f"Python{i}":f"DAY{i+1}" for i in range(3)})
输出:{'Python0': 'DAY1', 'Python1': 'DAY2', 'Python2': 'DAY3'}

2.筛选模式

{加工后的变量:加工后的变量 for循环 加工条件}
print({i:i+1 for i in range(3) if i > 1})
集合推导式

1.普通循环

{变量 for 循环}
print({i for i in range(3)})

2.筛选模式

{加工后的变量 for循环 加工条件}
print({i for i in range(3) if i >2})
生成器推导式

1.普通模式

g = (i for i in range(3))
#print(next(g))
#print(next(g))
#print(next(g))

2.筛选模式

g = (i for i in range(3) if i+1 ==2)
#print(next(g))
#print(next(g))

推导式:简化代码,提供逼格,提高可读性

生成一些有规律的数据,生成的数据较大时建议使用生成器推导式

例子:找到S字符串中有几个e

普通写法:
s = "alex,meet"
for i in s:
    if i=="e":
        print(count)
    count += 1
推导式写法:print([i for i in range(len(s)) if s[i] =="e"])

例子2 找到names中带e的

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
普通写法:
for i in names:
    for em in i:
        if"e" in em:
print(em)
推导式写法:print([em for i in names for em in i if "e" in em])

匿名函数

  • 匿名函数:一句话函数
  • 匿名函数的名字叫做lambda
  • 匿名函数的编写格式:
f = lambada a,b:a+b

# def func(a,b):
#     c = a + b
#     return c
# print(func(1,2))

lambdadef是一样的 定义函数

a,b(a,b)是一样的 形参

返回值 :a+breturn a+b 是一样的

形参 :能接受位置参数,动态位置参数(*args),默认参数,动态关键字参数(**kwargs),可以不写

返回值:只能返回一个数据,必须写,如果是多个数据需要带括号

f = lambda x,y:(x,y,x+y)
print(f(1,2))    输出结果(1,2,3)
f = lambda x:(x[0],x[2])  也可以索引
print(func("asdasdas"))  
f = lambda x,y:x if x>y else y   后边也可以跟条件
print(f(3,122)) 结果122
g=(lambda i:i+1 for j in range(3))  带括号的是生成器
print([em(3)for em in g])   [4,4,4]    for j in range(3)创建三个生成器,for em in g循环三个生成器,传参3,结果是[4,4,4]
g=[lambda :i+1 for i in range(3)]   for i in range(3)  创建三个lambda匿名函数,pirnt(g) 是三个匿名函数内存地址,存放在g这个列表中
print([em() for em in g])  [3,3,3]  循环每个lambda 由于创建完三个lambda,i的值停留最后一个,所以
i的值是2,故2+1 调用三次函数   结果[3,3,3]

原文地址:https://www.cnblogs.com/zzsy/p/12219673.html

时间: 2024-10-12 07:35:57

python基础之推导式及匿名函数和高阶函数的相关文章

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO

Python函数,匿名函数,高阶函数,内置函数——08

函数 当一个函数的返回值是另一个函数的函数名时,只是返回该函数的内存地址,该函数的作用域不会发生改变. name = 'winsodm' def test(): name = 'xl' print('in the test') def test1(): print('in the test1') return test res = test1() res() #结果是: name = 'xl' 'in the test' #这里返回的test 之后运行 还是输入test里的变量name的值,而不

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

8-[函数]-嵌套函数,匿名函数,高阶函数,递归函数

1.嵌套函数 (1)多层函数套用 name = "Alex" def change_name(): name = "Alex2" def change_name2(): name = "Alex3" print("第3层打印", name) change_name2() # 调用内层函数 print("第2层打印", name) change_name() print("最外层打印",

[ python ] 匿名函数和高阶函数

匿名函数 描述:    关键字 lambda 定义的函数    语法: 函数名 = lambda 参数:返回值 返回值:    函数返回结果值 实例: 一个参数的匿名函数: func = lambda x: x*x f = func(2) print(f) # 执行结果: # 4 多个参数的匿名函数: func = lambda x, y: x+y f = func(1, 2) print(f) # 执行结果: # 3 高阶函数 (1)map 描述:    map()会根据提供的函数对指定序列做

Day3-递归函数、高阶函数、匿名函数、内置函数

一.递归函数 定义:函数内部可以调用其它函数,如果调用自身,就叫递归. 递归特性: 1.必须有结束条件退出: >>> def calc(n): ... print(n) ... return calc(n+1) ... >>> calc(0) 0 1 ... 998 RecursionError: maximum recursion depth exceeded while calling a Python object 分析: 没有结束条件,超过最大递归次数999次后

函数-内置函数,匿名函数,嵌套函数,高阶函数,序列化

函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim

Python_匿名函数和高阶函数

匿名函数: 就是没有名字的函数,直观理解使用lambda关键字定义的函数称为匿名函数 学习匿名函数的目的: 通过匿名函数可以简化普通函数的代码实现,匿名函数可以让的代码变的更少 匿名函数的注意点:1. 匿名函数也是属于函数,调用匿名函数的时候也需要加上小括号2. 匿名函数只能一行代码3. 匿名函数的返回值不需要加return关键字 匿名函数的语法格式:lambda 形参1, 形参2,...: 返回的数据或者调用其他函数 使用new_func这个变量,保存定义好的匿名函数,此时new_func其实

python开发之路---第二章之--函数之高阶函数

## 一个函数的变量为另一个函数,这种函数就称为高阶函数 ## return 一个函数名也可以称为高阶函数 def func(x,y): return x+y def cale(x): return x f = cale(func) a = f(4,5) print (a) ## 这里的实际上执行的是func的函数,所以不传参数的话会报错,必须传入2个参数, 原文地址:https://www.cnblogs.com/LoveElsa/p/10280029.html