码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-10-24 10:27:18      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:strong   循环   lower   als   定义   扩展   sequence   apple   必须   

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

<filter at 0x10d9d10b8>


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‘}

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

标签:strong   循环   lower   als   定义   扩展   sequence   apple   必须   

原文地址:https://www.cnblogs.com/tester007/p/13866748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!