首页 > 编程语言 >python系列教程209——复杂的lambda语句

python系列教程209——复杂的lambda语句

时间:2023-05-25 12:31:30浏览次数:54  
标签:aa python else sys 209 表达式 lambda

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

由于lambda的主体必须是单个表达式(而不是一些语句),所以如果想要将更多的逻辑封装到一个lambda中,就需要一些技巧。例如,如果你希望在lambda函数中进行print,就应该直接编写sys.stdout.write(str(x)+'\n')这个表达式,而不是使用print(x)这样的语句。类似地,要在一个lambda中嵌套逻辑,可以使用前面介绍过的if/ else三元表达式,或者对等的但需要些技巧的and/or组合。例如下面的语句:

if a:

    b

else:

    c

能够由下面的表达式来模拟:

b if a else c

((a and b) or c)

因为这样的表达式能够放在lambda中,所以它们能够在lambda函数中来实现选择逻辑。

>>>lower = (lambda x,y: x if x < y else y)

>>>lower('bb','aa')

'aa'

>>>lower('aa','bb')

'aa'

此外,如果需要在lamdba函数中执行循环,那么可以嵌入map调用或列表解析表达式这样的工具来实现。

>>>import sys

>>>showall = lambda x: list(map(sys.stdout.write,x)) # Use list in 3.0




>>>t = showall(['spam\n','toast\n','eggs\n'])

spam

toast

eggs




>>>showall = lambda x: [sys.stdout.write(line) for line in x]




>>>t = showall(('bright\n','side\n','of\n','life\n'))

bright

side

of

life

这些技巧应该在万不得已的情况下才使用。因为一不小心,它们就会导致不可读(也称为晦涩难懂)的Python代码。一般来说,简洁优于复杂,明确优于晦涩,而且一个完整的语句要比神秘的表达式要好。这就是为什么lambda仅限于表达式。如果你有更复杂的代码要编写,可使用def。lambda只针对较小的一段内联代码。

标签:aa,python,else,sys,209,表达式,lambda
From: https://blog.51cto.com/captainbed/6346639

相关文章

  • < Python全景系列-7 > 提升Python编程效率:模块与包全面解读
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python全景系列的第七篇,本文将深入探讨Python......
  • How to change the default Python2 to Python3 on Linux All In One
    HowtochangethedefaultPython2toPython3onLinuxAllInOneRaspberryPi在Linux中如何把默认的Python2更改为Python3solutions.bashrc/.zshrcalias$sudovim.bashrc$cat.bashrc$cat.bashrc|greppy#.bashrc配置一个alias✅#Python3=......
  • python的threading模块
    线程线程被称为轻量级进程(LightweightProcess,LWP),是cpu调度的基本单位组成:线程ID、当前指令指针(PC)、寄存器集合、堆栈组成在单个程序中同时运行多个线程完成不同的工作,称为多线程。python中提供了thread和threading模块对线程进行操作,其中thread模块是比较底层的模块,threading模......
  • 003 Python 学习笔记
    """-----------bool运算符、比较运算符学习----------bool运算符Ture/False,注:Ture本质上是一个数字即1,False是0使用方式:bool或使用比较运算符(>、<、=、>=、<=、==)字符串可拼接,bool不可拼接"""isSuccess=Trueprint(f"isSuccess={isSuccess}")isOk=10......
  • 盘点一个VScode中Python解释器选择的问题
    大家好,我是皮皮。一、前言前几天在Python最强王者群【PythonPie】问了一个Python解释器的问题,这里拿出来给大家分享下。二、实现过程这里【Ineverleft】问了【ChatGPT】,并给出了答案,如下所示:这可能是由于Conda环境未正确配置或更新导致的问题。您可以尝试重新安装和配置Cond......
  • java函数式编程stream流操作lambda表达式使用方法引用用法等练习
    java函数式编程stream流操作lambda表达式使用方法引用用法等练习 @Testvoidtest01(){System.out.println("111");List<Author>authors=getAuthor();//stream流打对象中一个字段authors.stream().distinct().forEach(author......
  • Android tcp、okhttp请求&&python tcp&&a bytes-like object is required, not ‘str
    更多内容欢迎来到我的新博客blog.devilwst.top更多内容欢迎来到我的新博客blog.devilwst.top首先声明一下,本文部分代码来自于博客AndroidpublicstaticvoidGetByHttpURL(finalStringurl){newThread(newRunnable(){@Overridepublicvo......
  • 【转载】Mybatis Plus QueryWrapper结合lambda表达式使用distinct的方法
    MybatisPlusQueryWrapper的lambda用起来感觉挺爽的,有点JPA的感觉,也不需要拼很多字符串,可以利用IDE的代码检查功能,总之好处多多,停不下来。最近遇到一个问题,需要对SQL查询的结果做去重处理,自然想到了使用distinct。对于复杂的SQL语句,一般使用自定义XML的方式,但是这么个小问题,XML......
  • XML文件批量合并成Excel表格(Python)
    importosimportxml.etree.ElementTreeasETimportpandasaspdfolder_path="C:/xxx/Desktop/2022"#替换为你的文件夹路径#获取文件夹中的所有文件file_list=os.listdir(folder_path)#创建一个空的DataFrame来存储所有XML文件的数据all_data=pd.DataFra......
  • 基于Expression Lambda表达式树的通用复杂动态查询构建器——《构思篇一》
    在上一篇中构思了把查询子句描述出来的数据结构,那么能否用代码将其表达出来,如何表达呢?再次回顾考察,看下面的查询子句:Id>1andId<10如上所示,有两个独立的条件分别为Id>1和Id<10,用一个逻辑操作符and连接起来。再看下面这条,后面也是两个独立条件通过操作符or连接,并包在括号......