程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-2-22 Python基础学习21

发布于2020-02-25 00:43     阅读(690)     评论(0)     点赞(6)     收藏(1)


lambda表达式

格式:

>>> def dxs(x):
	return 2* x + 1

>>> lambda x: 2*x+1
<function <lambda> at 0x03DA7D60>
>>> g= lambda x: 2*x+1
>>> g(5)
11
>>> dxs(5)
11
>>> lambda x,y: x+y
<function <lambda> at 0x03DA7D60>
>>> g=lambda x,y: x+y
>>> g(3,4)
7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

lambda表达式的作用:
省去函数定义的过程,更加精简

BIF
filter(过滤器):
格式:filter(条件,内容)(返回的值为filter类型,可以用list或者tuple列表显示)

>>> filter(None,[1,0,False,True])
<filter object at 0x016200B8>
>>> list(filter(None,[1,0,False,True]))
[1, True]
>>> def odd(x):
	return x%2

>>> temp = range(10)
>>> show = filter(odd,temp)
>>> print(show)
<filter object at 0x01636A00>
>>> list(show)
[1, 3, 5, 7, 9]
>>> list(filter(lambda x: x%2,range(10)))
[1, 3, 5, 7, 9]
>>> type(show)
<class 'filter'>
>>> type(filter(lambda x: x%2,range(10)))
<class 'filter'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

map(映射)
对元素进行加工,返回加工后的新序列

>>> list(map(lambda x:x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  • 1
  • 2
  1. 在匿名函数中使用定义好的参数类似于函数的定义
#1
>>> a=(lambda x,y=3:x*y)
>>> a(2)

  • 1
  • 2
  • 3
  • 4
>>> def diaosi(x):
	if x%2:
		return x
	else:
		None

		
>>> print(diaosi(3))
3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
>>> tuple(filter(lambda x: x%3==0,range(100)))
(0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99)
  • 1
  • 2
>>> [x for x in range(100) if x%3==0 ]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
  • 1
  • 2

列表解析式:
(1)条件循环改写

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

doubled_odds = []
for n in numbers:
    if n % 2 == 1:
        doubled_odds.append(n * 2)
#转换成了这两行代码:

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

doubled_odds = [n * 2 for n in numbers if n % 2 == 1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
	(2)无条件循环改写
  • 1
oubled_numbers = []
for n in numbers:
    doubled_numbers.append(n * 2)
上面这段代码页可以改写为一个列表解析式:

doubled_numbers = [n * 2 for n in numbers]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
	(3)嵌套循环改写
  • 1
flattened = []
for row in matrix:
    for n in row:
        flattened.append(n)
下面这个列表解析式实现了相同的功能:

flattened = [n for row in matrix for n in row]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
>>> list(map(lambda x,y:[x,y],range(10),range(10)))
[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9]]
  • 1
  • 2
  1. 相当于函数的嵌套
>>> def odd(n):
	return lambda x: n*x
#调用方式一
>>> print(odd(1)(2))
2

#调用方式二
>>> a = odd(2)
>>> print(a('at'))
atat
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
发布了19 篇原创文章 · 获赞 6 · 访问量 3500


所属网站分类: 技术文章 > 博客

作者:加班是一种习惯

链接:https://www.pythonheidong.com/blog/article/232977/ed4062056bdce3e8f1f1/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)