python字典推导式,列表推导式,匿名函数
2021-01-06 06:31
标签:迭代 单词 func 奇数 表达式 copy cal col 利用 匿名函数就是不需要显式的指定函数名。 打印结果: 100 关键字 匿名函数有个限制,就是只能有一个表达式,不用写 用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数: 有些函数在代码中只用一次,而且函数体比较简单,使用匿名函数可以减少代码量,看起来比较"优雅“ 主要与其他函数联合使用 遍历序列,对序列中每个元素进行函数操作,最终获取新的序列。 1.求列表[1,2,3,4,5,6,7,8,9],返回一个n*n 的列表 reduce(func,[1,2,3]) 等同于 func(func(1,2),3) 对于序列内所有元素进行累计操作 对于序列中的元素进行筛选,最终获取符合条件的序列
sorted(iterable, /, *, key=None, reverse=False) 接收一个 可迭代对象:主要与列表,字符串,元祖,集合和字典 key:接受一个函数,根据此函数返回的结果,进行排序 reverse:排序方向,默认为从小到大,reverse=True为逆向 举例使用: python字典推导式,列表推导式,匿名函数 标签:迭代 单词 func 奇数 表达式 copy cal col 利用 原文地址:https://www.cnblogs.com/qxh-beijing2016/p/12977429.htmlpython字典推导式
#字典推导式(在2.7中才加入的)
dict1={"a":1,"b":2,"c":3}
d={str(v):k for k,v in dict1.items()}
print d
打印结果:
{‘1‘: ‘a‘, ‘3‘: ‘c‘, ‘2‘: ‘b‘}
python列表推导式
#列表推导式
list1=[1,2,3,4,5,6,7,8,9,10]
list2=[i for i in list1 if i%2==0 ]
print list2
打印结果:
[2, 4, 6, 8, 10]python匿名函数
匿名函数:
lambda
表示匿名函数,冒号前面的n
表示函数参数,可以有多个参数。return
,返回值就是该表达式的结果。#这段代码
def calc(x,y):
return x**y
#换成匿名函数
calc = lambda x,y:x**y
print(calc(2,5))
def calc(x,y):
if x > y:
return x*y
else:
return x / y
#三元运算换成匿名函数
calc = lambda x,y:x * y if x > y else x / y
print(calc(2,5))
匿名函数使用场景:
map函数
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回#一般解决方案
li = [1,2,3,4,5,6,7,8,9]
for ind,val in enumerate(li):
li[ind] = val * val
print(li)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
# 高级解决方案
li = [1,2,3,4,5,6,7,8,9]
print(list(map(lambda x:x*x,li)))
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce函数
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,其效果就是:#接受一个list并利用reduce()求积
from functools import reduce
li = [1,2,3,4,5,6,7,8,9]
print(reduce(lambda x,y:x * y,li))
# 结果=1*2*3*4*5*6*7*8*9 = 362880
filter函数
filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。# 在一个list中,删掉偶数,只保留奇数
li = [1, 2, 4, 5, 6, 9, 10, 15]
print(list(filter(lambda x:x % 2==1,li))) # [1, 5, 9, 15]
# 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数
li = list(range(1, 200))
print(list(filter(lambda x:int(str(x))==int(str(x)[::-1]),li)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]
sorted函数
key
函数来实现对可迭代对象进行自定义的排序# 对列表按照绝对值进行排序
li= [-21, -12, 5, 9, 36]
print(sorted(li, key = lambda x:abs(x)))
# [5, 9, -12, -21, 36]
"""
sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素:
keys排序结果 => [5, 9, 12, 21, 36]
| | | | |
最终结果 => [5, 9, -12, -21, 36]
"""# 把下面单词以首字母排序
li = [‘bad‘, ‘about‘, ‘Zoo‘, ‘Credit‘]
print(sorted(li, key = lambda x : x[0]))
# 输出[‘Credit‘, ‘Zoo‘, ‘about‘, ‘bad‘]
"""
对字符串排序,是按照ASCII的大小比较的,由于‘Z‘ """
# 假设我们用一组tuple表示学生名字和成绩:
L = [(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66), (‘Lisa‘, 88)]
# 请用sorted()对上述列表分别按名字排序
print(sorted(L, key = lambda x : x[0]))
# 输出[(‘Adam‘, 92), (‘Bart‘, 66), (‘Bob‘, 75), (‘Lisa‘, 88)]
# 再按成绩从高到低排序
print(sorted(L, key = lambda x : x[1], reverse=True))
# 输出[(‘Adam‘, 92), (‘Lisa‘, 88), (‘Bob‘, 75), (‘Bart‘, 66)]
上一篇:python虚拟环境搭建与使用
下一篇:OpenWebPage
文章标题:python字典推导式,列表推导式,匿名函数
文章链接:http://soscw.com/index.php/essay/40427.html