我看到它说(artima.com和python-course.eu)有一个比Guido更杰出的人希望从Python中删除lambda,这表明使用列表理解可以获得相同的结果。作为一个学习Python并努力掌握lambdas和list理解的人,我(到目前为止)倾向于后者。
上面详述的python课程页继续演示lambda函数的使用,事实上,我可以重写使用list comprehension提供的示例。
E、 g
C = [39.2, 36.5, 37.3, 38, 37.8]
F1 = list(map(lambda x: (x *1.8) + 32, TC))
F2 = [(x *1.8) + 32 for x in TC]
其中F1和F2各返回一次
^{pr2}$在这些情况下,我同意可以使用list comprehension来代替lambda,而且我理解它们更好地引导!在
现在正在与数据帧应用()函数我在尝试用列表理解来替代lambda时遇到了困难。接受
G = pd.DataFrame({'year':[1992, 1996, 1999], 'winner':['Pakistan',\
'Sri Lanka','Australia']}, columns = ['year','winner'])
这给了
year winner
0 1992 Pakistan
1 1996 Sri Lanka
2 1999 Australia
如果我想操作序列数据,在本例中,要重新格式化年份,lambda函数可以工作:
G['year'] = G['year'].apply(lambda x: "'{:02d}".format(x % 100))
回来了
year winner
0 '92 Pakistan
1 '96 Sri Lanka
2 '99 Australia
我想不出用列表理解来做这个的方法。
出于学术好奇,有没有办法?
或者“除了lambda、filter、map和reduce还有一个同样强大的替代方法,即列表理解”的断言是错误的吗?在
怎么办
是吗?在
你误解了,这个论点并不是说}的组合-
通常涉及
lambda
可以被列表理解所取代,而是map
和{lambda
-与列表理解有直接的等价关系。E、 G或者更清晰地使用过滤和映射:
^{pr2}$相当于
lambda
创建函数对象,列表理解创建列表对象。一个lambda
可以替换为一个完整的函数定义:对
lambda
来说,唯一的优势是它是匿名的,也就是说,它不必指定给一个名字。在相关问题 更多 >
编程相关推荐