python map lambda实现_python基础知识--10Lambda匿名函数、三元表达式及map、reduce、filter...

1.Lambda匿名函数

# 匿名函数

# 匿名函数,没有定义函数的名称,可以实现函数某些简单功能

# 需求

# 传入 x,y

# 返回 x + y 的值

#%%

def add(x,y):

a = x + y

return a

lambda param_list:expression

# param_list,参数列表

# expression,建议书写一些简单的表达式,没法完整实现复杂代码块内容

#%%

f = lambda x,y:x+y

f(3,4)

运行结果:7

f = lambda x,y:x+y

# 需求:

# 传入两个参数x,y,如果 x>=y 返回 x+y。

# 如果x < y,返回 x -y

#%%

def f(x,y):

if x>=y:

return x+y

return x-y

f = lambda x,y: x+y if x>=y else x-y # 三元表达式 高阶函数

f(5,4)

运行结果:9

2.三元表达式

# 三元表达式格式

# 条件为真的结果 if 条件判断 else 条件为假的结果

#%%

f = lambda x,y: x+y if x>=y else x-y

#%%

f(5,4)

运行结果:9

# 需求

# 输入一个单词

# 如果是小写单词,则返回小写单词,否则都返回大写单词

#%%

# 三元表达式格式

# 条件为真的结果 if 条件判断 else 条件为假的结果

#%%

f = lambda x: x if x.islower() else x.upper()

f('Hello')

运行结果:

'HELLO'

3.MAP

a = [1,2,3,4,5]

# 需求:

# 生成一个列表b,列表b内的元素为a列表每个元素的三次方

b = []

for i in a:

b.append(i ** 3)

b

运行结果:

[1, 8, 27, 64, 125]

#%%

map(func, *iterables)

# func 代表可接收一个函数

# iterables 代表可接收一个或多个可迭代的序列

#%%

a = [1,2,3,4,5]

# 需求:

# 生成一个列表,列表内的元素为a列表每个元素的三次方

def f(x):

return x ** 3

b = map(f,a)

list(b)

运行结果:

[1, 8, 27, 64, 125]

b = map(lambda x:x**3,a)

list(b)

运行结果:

[1, 8, 27, 64, 125]

#%%

# 将两个列表元素相加之后结果,存放在一个新列表c中

#%%

a = [1,2,3,4,5]

b = [1,2]

c = map(lambda x,y:x+y,a,b)

list(c)

4.Reduce

a = [1,2,3,4,5]

# 需求

# 计算a列表各元素相乘之后的值

#%%

num = 1

for i in a:

num *= i

num

运行结果:120

#%%

from functools import reduce

reduce(function, sequence[, initial])

#%%

# function 接收一个函数

# sequence 接收一个可迭代序列

# initial 初始运算的值

#%%

# 连续计算

# 计算a列表各元素相乘之后的值

#%%

a = [1,2,3,4,5]

num = reduce(lambda x,y:x*y,a,1000) # 1000 * 1 * 2 * 3 * 4 *5

num

运行结果:

120000

#%%

b = ['a','b','c']

r = reduce(lambda x,y:x+y,b,'???') # ???abc

r

运行结果:

'???abc'

5.Filter

a = [0,1,2,3,4,5]

#%%

# 将a列表中非0的元素,保存到b列表中

#%%

b = []

for i in a:

if i !=0:

b.append(i)

#%%

b

[1, 2, 3, 4, 5]

# 用于元素过滤

filter(function, iterable)

# function 接收一个函数

# iterable 接收一个可迭代序列

# 适用场景

# 用于序列元素过滤

# 需求:

# 将a列表中非0的元素,保存到b列表中

#%%

a = [0,1,2,3,4,5]

def f(x):

if x !=0:

return x

b = filter(f,a)

list(b)

[1, 2, 3, 4, 5]

#%%

c = filter(lambda x:True if x!=0 else False,a)

c

list(c)

[1, 2, 3, 4, 5]

#%%

# filter 返回结果必须是 True 或者 False

#%%

bool(1)

True

#%%

bool(0)

False

#%%

c = filter(lambda x:x,a)

list(c)

[1, 2, 3, 4, 5]

6.列表推导式

# 如何快速生成一个 0-9 列表

#%%

a = []

for i in range(10):

a.append(i)

#%%

a

运行结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 基本格式

variable = [i for i in input_list if 条件判断]

# variable 列表名,可自定义

# i 循环变量名

# input_list 可迭代序列

# if 条件判断,如果不写的话,默认所有条件都成立

# 如何快速生成一个 0-9 列表

#%%

a = [i for i in range(10) if i>3]

a

运行结果:

[4, 5, 6, 7, 8, 9]

# 需求

# 生成一个列表,列表内的元素为a列表每个元素的三次方

#%%

a = [1,2,3,4,5]

# map lambda

b = map(lambda x:x**3,a)

list(b)

运行结果:

[1, 8, 27, 64, 125]

c = [i**3 for i in a]

c

运行结果:

[1, 8, 27, 64, 125]

# 需求

# 将字典里面的键,保存到一个列表c中

#%%

d = {'lemon':5,"apple":3,"pear":4}

c = [i for i in d.keys()]

c

['lemon', 'apple', 'pear']

# 扩展

# 将字典里的键与值,进行替换

e = {value:key for key,value in d.items()}

e

运行结果:

{5: 'lemon', 3: 'apple', 4: 'pear'}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值